Infraestructura backend de alto rendimiento para la productividad personal y la gamificación.
Ataraxia API es el núcleo de una plataforma diseñada para ayudar a los usuarios a gestionar su tiempo y tareas mediante técnicas como Pomodoro, potenciado por un sistema de gamificación que recompensa la consistencia.
Desarrollada con NestJS y MySQL, esta versión v0.2 introduce una arquitectura escalable, seguridad robusta y despliegue optimizado con Docker.
-
Sistema de Rachas (Streaks):
Cálculo automático de la actividad diaria. -
Logros Desbloqueables:
Sistema de recompensas (ej. "Primer Pomodoro", "Racha de 7 días"). -
Integración con Google Drive:
Iconos e insignias servidos dinámicamente desde Drive.
-
Autenticación JWT Dual:
Access Tokens (15 min) y Refresh Tokens (7 días). -
Protección de Datos:
Hashing de refresh tokens en base de datos. -
Hardening:
Protección contra fuerza bruta (Throttling), cabeceras seguras (Helmet) y validación estricta con DTOs.
-
Base de Datos Sólida:
MySQL con migraciones automáticas y optimización de índices. -
Configuración Multiplataforma:
Preferencias de usuario por dispositivo (Web / Mobile). -
Docker Ready:
Imagen de producción optimizada (~150MB) usando Multi-stage builds.
💡 Nota: La documentación completa e interactiva está disponible en /docs cuando el servidor está en ejecución.
🔐 Todos los endpoints protegidos requieren el header:
Authorization: Bearer <access_token>
| Método | Endpoint | Descripción |
|---|---|---|
| POST | /auth/register |
Crea una nueva cuenta de usuario |
| POST | /auth/login |
Inicia sesión y devuelve Access + Refresh Token |
| POST | /auth/guest-login |
Crea o recupera sesión de invitado por deviceId |
| POST | /auth/refresh |
Solicita un nuevo Access Token |
| POST | /auth/logout |
Invalida el Refresh Token |
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /gamification/stats |
Estadísticas: racha, récord, nivel y logros |
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /timers |
Historial de sesiones Pomodoro |
| POST | /timers |
Registra una sesión y suma a la racha |
| PATCH | /timers/:id |
Actualiza el estado de una sesión |
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /tasks |
Lista tareas del usuario |
| POST | /tasks |
Crea una nueva tarea |
| PATCH | /tasks/:id |
Completa o edita una tarea |
| DELETE | /tasks/:id |
Eliminación lógica (Soft Delete) |
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /settings |
Obtiene configuración por plataforma |
| PATCH | /settings |
Actualiza preferencias del usuario |
- Core: NestJS
- Base de Datos: MySQL & TypeORM
- Seguridad: Passport, JWT, Bcrypt, Helmet
- Validación: class-validator & class-transformer
- Infraestructura: Docker & Docker Compose
- Servicios Externos: Google Drive API (assets)
- Docker y Docker Compose (Recomendado)
- Node.js v20+ (solo desarrollo local)
git clone https://github.com/lavenderedit/ataraxia-api.git
cd ataraxia-api
cp .env.example .env
docker-compose up -d --build- API:
http://localhost:3000/api - Swagger UI:
http://localhost:3000/docs
npm install
npm run build
npm run migration:run
npm run start:devAsegúrate de tener MySQL corriendo y configurado en .env.
🛠️ Desarrollado con 💙 y mucho café por Studios TKOH!