API REST minimalista y modular para autenticación y gestión de productos, persistida en Firebase Firestore, construida con Express y JavaScript moderno (ESM).
✅ Arquitectura limpia Controller → Service → Model.
✅ Persistencia en Firebase (Auth + Products).
✅ CRUD completo de productos con PATCH real.
✅ Autenticación JWT con middleware desacoplado.
✅ Manejo de errores centralizado y códigos HTTP normalizados.
✅ Validaciones defensivas de payloads y parámetros.
✅ Alias de paths vía jsconfig.json.
✅ Tests manuales mediante archivos .http y Postman Collection.
✅ Rate limiting vía Vercel WAF [10req/min]
🟪 Documentación Frontend 'MVC' mediante Astro Starlight (MD, MDX) y Starlight OpenAPI. [En desarrollo temprano]
# Instalación
git clone https://github.com/bluware-dev/blustore-api.git
cd blustore-api
pnpm install # o npm install# Desarrollo
pnpm dev
# o
npm run devAPI base: https://blustore-api.vercel.app/api
Astro Starlight OpenAPI: https://blustore-api.vercel.app/docs [En desarrollo]
| Método | Endpoint | Descripción | Auth |
|---|---|---|---|
| POST | /api/auth/register | Registrar usuario | ❌ |
| POST | /api/auth/login | Login + JWT | ❌ |
| GET | /api/products | Listar productos | ❌ |
| GET | /api/products/:id | Obtener producto por ID | ❌ |
| POST | /api/products/create | Crear producto | ✅ |
| PATCH | /api/products/update | Actualizar producto (PATCH) | ✅ |
| DELETE | /api/products/:id | Eliminar producto | ✅ |
src/
├── index.js # Bootstrap Express
├── api/
│ ├── auth/ # Auth (controller/service/model) -> Firebase
│ └── products/ # Products CRUD -> Firebase
├── middlewares/ # Auth + error handler
├── config/ # Globals + JWT + Firebase
├── utils/ # HTTP status + response helpers
└── views/ # Astro Starlight + OpenAPI
Proyecto intencionalmente minimalista y modular:
Firebase como storage, lógica documentada vía referencias oficiales.
Inspirado en principios UNIX, KISS y Clean Code, priorizando legibilidad, SRP y escalabilidad.
Aclaración: Este proyecto fue desarrollado íntegramente por mí (Elian “Blu” Jofré) [bluware-dev]. ChatGPT se utilizó solo con fines académicos y de consulta: discusión de diseño, arquitectura, criterios técnicos, validación conceptual, revisión de errores y documentación, además de snippets mínimos ilustrativos.
El código fue escrito y decidido manualmente; no se usó generación automática ni copy/paste asistido, ni herramientas como Copilot, CodeAI CLIs, Cursor/Windsurf o MCPs.
![]() Elian (Blu) Software Developer |
