API REST para el seguimiento de gastos personales. Los usuarios se registran, inician sesión con JWT y gestionan sus propios gastos con filtros opcionales por fecha.
- Node.js v18+
- PostgreSQL corriendo localmente
git clone https://github.com/dsMxguel/expense-tracker-api.git
cd expense-tracker-api
npm installCopia el archivo de variables de entorno y completa los valores:
cp .env.example .envDATABASE_URL="postgresql://usuario:password@localhost:5432/expense_tracker"
JWT_SECRET="tu_secreto_aqui"
PORT=3000Ejecuta la migración de base de datos:
npx prisma migrate devInicia el servidor:
npm run dev| Método | Ruta | Descripción |
|---|---|---|
| POST | /api/auth/register |
Crear una cuenta nueva |
| POST | /api/auth/login |
Iniciar sesión y obtener un JWT |
Todas las rutas de gastos requieren el header Authorization: Bearer <token>.
| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/expenses |
Listar tus gastos |
| POST | /api/expenses |
Agregar un nuevo gasto |
| PUT | /api/expenses/:id |
Actualizar un gasto existente |
| DELETE | /api/expenses/:id |
Eliminar un gasto |
| Query param | Valor | Notas |
|---|---|---|
filter |
last_week / last_month / last_3_months / custom |
Opcional |
startDate |
Fecha ISO 8601 | Requerido si filter=custom |
endDate |
Fecha ISO 8601 | Requerido si filter=custom |
Registro
POST /api/auth/register
{
"email": "[email protected]",
"password": "123456"
}Crear gasto
POST /api/expenses
Authorization: Bearer <token>
{
"amount": 25.50,
"category": "Comestibles",
"description": "Compras del super",
"date": "2026-06-16T12:00:00.000Z"
}Categorías disponibles: Comestibles, Ocio, Electronica, Utilidades, Ropa, Salud, Otros
{ "success": true, "data": { ... } }
{ "success": false, "error": "Mensaje descriptivo" }src/
├── index.js
├── routes/
├── controllers/
├── services/
├── middleware/
└── validators/
prisma/
└── schema.prisma
Flujo de request: Ruta → Middleware (JWT) → Validador (Zod) → Controlador → Servicio → Prisma → PostgreSQL
Inspirado de : https://roadmap.sh/projects/expense-tracker-api