Auth Ecosystem
Sistema completo de autenticación y gestión de usuarios
Ecosistema completo de autenticación con backend en Fastify, múltiples frontends en Next.js, y librería compartida. Incluye JWT dual token, OAuth2, sistema de amistades, bloqueos, y perfiles de usuario.



1. Arquitectura
Routes
Capa de presentación HTTP con validación de esquemas y manejo de requests
Services
Lógica de negocio con autenticación, gestión de sesiones y operaciones sociales
Database
Capa de persistencia con Prisma ORM y PostgreSQL
2. Características
Seguridad
JWT Dual Token
Access tokens de corta duración (15min) y refresh tokens de larga duración (7 días) con rotación automática
OAuth2 Social Login
Integración con Google y GitHub OAuth2 con manejo de estado CSRF y callbacks seguros
Token Versioning
Invalidación instantánea de todos los tokens mediante incremento de versión sin blacklist
Rate Limiting
Limitación de requests por endpoint con configuración granular y headers estándar
Social
Sistema de Amistades
Solicitudes de amistad con estados pending/accepted/rejected y auto-accept bidireccional
Gestión de Amigos
Listado paginado de amigos, solicitudes entrantes y salientes con filtros
Sistema de Bloqueos
Bloqueo de usuarios con eliminación automática de amistades existentes
Perfiles de Usuario
Perfiles públicos y privados con biografía, avatar y datos personales
Frontend
Auth Frontend
UI de login/registro con formularios validados, OAuth buttons y manejo de errores
UserCore Dashboard
Dashboard de usuario con gestión de perfil, amigos y búsqueda de usuarios
Auth Client Library
Librería compartida TypeScript con hooks React para gestión de autenticación
Infraestructura
Observabilidad
Métricas Prometheus con contadores de requests, latencia y operaciones
Logging Estructurado
Logs JSON con Pino logger incluyendo contexto de request y usuario
Documentación Swagger
API documentada automáticamente con OpenAPI 3.0 y UI interactiva
Production Ready
Docker multi-stage, health checks, graceful shutdown y configuración por entorno
3. Tech Stack
4. API Reference
| Módulo | Endpoints |
|---|---|
| Autenticación | 5 |
| OAuth | 4 |
| Perfiles | 3 |
| Amistades | 8 |
| Bloqueos | 3 |
| Interno | 1 |
| Health | 2 |
5. Decisiones de Diseño
Token Versioning vs Blacklist
En lugar de mantener una blacklist de tokens revocados, se usa un campo tokenVersion. Al hacer logout, se incrementa la versión e invalida instantáneamente todos los tokens existentes sin almacenamiento adicional.
publicId como Identificador Externo
Los usuarios tienen un id autoincremental interno y un publicId UUID externo. Esto previene enumeración de IDs y permite cambiar la estructura interna sin afectar la API pública.
Pares Normalizados de Amistad
normalizePair() asegura que user1Id siempre sea menor que user2Id. Esto previene duplicados y simplifica las queries de búsqueda.
Estrategia de Tokens Separados
Access token en response body (para localStorage) y refresh token en cookie httpOnly. Esto balancea seguridad con flexibilidad para SPAs.
6.Sub-proyectos
UI de autenticación con Next.js 16, React 19 y Tailwind CSS. Incluye formularios de login/registro con validación y botones OAuth.
Dashboard de usuario con Next.js 16, React 19 y Tailwind CSS. Gestión de perfil, sistema de amigos y búsqueda de usuarios.