Plataforma tipo Reddit construida para practicar arquitectura de microservicios moderna.
- Microservicios independientes
- WebSockets y comunicación realtime
- Rate limiting y protección anti-spam
- Caché distribuida con Redis
- Colas asíncronas con BullMQ y RabbitMQ
- Auth con JWT y refresh tokens
- Upload de archivos con validación
- Notificaciones en tiempo real
| Capa | Tecnologías |
|---|---|
| Backend | Java + Spring Boot, NestJS |
| Base de datos | PostgreSQL, Redis |
| Mensajería | Kafka, RabbitMQ |
| Frontend | Next.js, TailwindCSS |
| Infra | Docker, Docker Compose |
El sistema está dividido en microservicios pequeños e independientes.
root/
├── auth-service/
├── chat-service/
├── notification-service/
├── api-gateway/
├── frontend/
├── docker-compose.yml
└── README.mdResponsable de registro, login, JWT, refresh tokens, roles/permisos y validación de usuarios.
Stack: Spring Security · JWT · PostgreSQL
Responsable de comentarios realtime, WebSockets, feed de comentarios, likes y respuestas.
Stack: Spring WebSocket · Redis Pub/Sub · PostgreSQL
Responsable de notificaciones realtime, emails mock, eventos del sistema y procesamiento async.
Stack: NestJS · BullMQ · Redis
Responsable de centralizar requests, rate limiting, auth middleware y routing interno.
Stack: NestJS · Redis
Comunicación híbrida según el tipo de operación:
HTTP — para requests síncronos, validación de auth y consultas simples.
RabbitMQ — para eventos, notificaciones y procesamiento async.
user.created
post.created
comment.created
notification.send- Registro y login
- JWT access token + refresh token
- Hash de passwords
- Crear posts · Ver feed · Likes · Comentarios
- Comentarios en tiempo real via WebSockets
- Notificaciones automáticas al recibir comentarios, likes o respuestas
- Imágenes y avatares
- Validación de tamaño y metadata
- Sesiones
- Feed cacheado
- Rate limiting
- Eventos realtime
- Intentos de login
- Spam de comentarios y posts
- Envío de notificaciones
- Procesamiento async
- Tareas en background
Usuario inicia sesión
Auth Service genera JWT
Usuario crea un post
Chat Service guarda el post
Evento publicado en RabbitMQ
Notification Service procesa el evento
Usuarios suscritos reciben notificación realtimeAuth Service
JWT_SECRET=
DB_URL=
REDIS_HOST=Notification Service
REDIS_HOST=
RABBITMQ_URL=Chat Service
DB_URL=
REDIS_HOST=docker compose up --build- Kubernetes
- CI/CD pipeline
- Observabilidad con OpenTelemetry
- Elasticsearch para búsqueda
- Sistema de followers
- Trending posts
- CDN para uploads