Volver al portfolio

Auth Ecosystem

Sistema completo de autenticación y gestión de usuarios

Backend Frontend Microservice Security Social Engine

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.

24
Endpoints
6
Modelos
9
Migraciones
8
Tests

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

TypeScript
Fastify
Next.js
React
PostgreSQL
Docker
Prisma
Tailwind CSS

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

Auth Frontend

Frontend SPA

UI de autenticación con Next.js 16, React 19 y Tailwind CSS. Incluye formularios de login/registro con validación y botones OAuth.

Next.js
React
Tailwind CSS

UserCore

Frontend Dashboard

Dashboard de usuario con Next.js 16, React 19 y Tailwind CSS. Gestión de perfil, sistema de amigos y búsqueda de usuarios.

Next.js
React
Tailwind CSS

Auth Client

Shared Library

Librería TypeScript compartida publicada en GitHub Packages. Provee createAuthClient() con métodos y hooks React useAuth().

TypeScript
React