epacli is an interactive and scriptable CLI tool that queries the EPA Venezuela hardware store catalog via its public GraphQL endpoint and supplements store availability data through HTML scraping.

Stars

5

7-day growth

No data

Forks

0

Open issues

0

License

No data

Last updated

2026-07-29

AI repository intelligence
FR-AI / ANALYSIS

Why it is worth attention

It stands out for its clean architecture (repository pattern decoupling CLI from data sources), clever handling of missing API data via best-effort scraping, and a full scriptable mode with JSON output—all while being a practical, user-friendly tool for a real-world store.

Who it is for

  • Developers who prefer CLI tools for everyday tasks
  • Venezuelan consumers looking for a faster way to browse EPA catalog
  • Integration engineers needing programmatic access to EPA product data
  • QA or automation engineers who want to test or monitor product listings

Use cases

  • Searching products by keyword or exact SKU with pagination and detail views
  • Checking real-time physical store availability per location
  • Scripting price monitoring or catalog lookups with JSON output and exit codes
  • Exploring the EPA GraphQL schema via introspection for development or analysis

Strengths

  • Decoupled architecture: CLI only depends on a ProductRepository interface, allowing easy swap of data sources without touching CLI logic
  • Scriptable flags and multiple output formats (table, JSON, color control) for integration into pipelines
  • Resilient scraping: availability data is isolated in its own adapter; if scraping fails, detail view still works with a fallback note
  • Handles CloudFront WAF by defaulting to a browser User-Agent, avoiding 403 errors

Considerations

  • Store availability data comes from HTML scraping and may break if the website theme changes
  • Not an official API; usage is subject to EPA's terms and should not be abused with high-volume requests
  • Some fields like product characteristics table are not implemented due to server-side rendering without API exposure

README quick start

epa-cli

CLI interactivo por si te sientes superior al resto de la humanidad por querer usar el cli para todo, en esta ocasión para consultar el catálogo de Ferretería EPA Venezuela vía su endpoint GraphQL público (/graphql).

Uso

npm install
npm run dev

Te va a salir un menú navegable con flechas (↑↓ + Enter):

? ¿Qué quieres hacer?
❯ Buscar productos
  Buscar por SKU
  Salir

Buscar productos — escribe un término (ej. taladro) y te lista SKU, nombre, precio (con el precio de oferta tachado si aplica, formateado con la moneda de la tienda), disponibilidad y el link directo al producto, con un encabezado N resultados — página P de T. Si hay más de una página, te ofrece "Siguiente página" / "Página anterior" sin tener que repetir la búsqueda.

Buscar por SKU — escribe el SKU exacto (ej. VE-1001010) y te trae ese producto puntual, si existe.

En ambos flujos podés seleccionar "Ver detalle de un producto" (Enter sobre uno de la lista) para ver su ficha completa: descripción larga, categoría, precio, disponibilidad, calificación/reseñas si tiene, vigencia de la oferta si aplica, disponibilidad por tienda física ("Disponible en: Maracaibo, Valencia..."), y productos relacionados — que a su vez se pueden abrir con Enter, encadenando fichas.

La disponibilidad por tienda no sale de GraphQL (confirmado que no existe ahí, ver "Limitaciones confirmadas del schema") — sale de un scraping best-effort del HTML público de la página de producto (HtmlStoreAvailabilityRepository), porque ese dato viene renderizado server-side por Magento y no hay ningún endpoint (ni GraphQL ni REST) que lo exponga. Es la única parte del CLI que no habla con /graphql, y a propósito está aislada en su propio adaptador: si el theme de EPA cambia y el scraping deja de matchear, la ficha sigue mostrando todo lo demás con una nota ("no se pudo determinar") en vez de romperse. La tabla de "Características" (dimensiones, etc.) no se agregó — es la misma historia (renderizada server-side, sin API), pero no vale la pena scrapearla también por ahora.

Mientras espera la respuesta de EPA, el CLI muestra un spinner (se desactiva solo si la salida no es una terminal, por ejemplo al redirigir a un archivo).

Para compilar y correr la versión de producción:

npm run build
npm start

También se puede instala

Description

tienda EPA pero pa gente que le gusta usar la compu

Related repositories

Similar projects matched by category, topics, and programming language.

0xwilliamortiz
Featured
0xwilliamortiz GitHub avatar

openclaude-improved

OpenClaude is an open-source CLI coding agent that runs on any platform and supports a wide range of LLM providers, offering the same tools and workflows as Claude Code.

AI & Machine LearningLarge Language Models
577
RongleCat
Featured
RongleCat GitHub avatar

grok-app

Grok App is a desktop command center built with Tauri 2 that wraps the local Grok Build CLI into a graphical workbench for managing sessions, projects, media, automations, and accounts.

Developer ToolsCLI & Terminal
356
marcelpanse
Featured
marcelpanse GitHub avatar

youtube-guitar-tab-parser

A CLI tool that downloads YouTube guitar lesson videos, uses Claude vision to detect and extract the tab region from sampled frames, de-duplicates lines by bar number, and assembles them into a PDF.

Developer ToolsCLI & Terminal
165