Skip to content

Repository files navigation

BluStore API

Node.js Badge Express Badge Firebase Badge Astro Badge MIT License Badge

API REST minimalista y modular para autenticación y gestión de productos, persistida en Firebase Firestore, construida con Express y JavaScript moderno (ESM).


Características

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 + Uso

# 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 dev

API base: https://blustore-api.vercel.app/api

Astro Starlight OpenAPI: https://blustore-api.vercel.app/docs [En desarrollo]

Postman Workspace Público


📜 Endpoints

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

🏗️ Estructura del proyecto

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

💻 Filosofía

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.


Autor


Elian (Blu)

Software Developer

Contributors

Languages