Visión General de la Arquitectura
Descripción del Sistema
AlojaPlus implementa una arquitectura de microservicios moderna con separación clara entre frontend, backend, base de datos y servicios externos. La arquitectura está diseñada para ser escalable, mantenible y segura.
graph TB
subgraph "Cliente"
WEB[Web Browser]
MOB[Mobile Browser]
end
subgraph "Frontend - Next.js "
APP[Next.js Application]
UI[Chakra UI Components]
STATE[Redux Store]
AI_CLIENT[Gemini AI Client]
end
subgraph "Backend - Django"
API[Django REST API]
AUTH[Authentication Layer]
VIEWS[Views Layer]
MODELS[Models Layer]
UTILS[Utils & Helpers]
end
subgraph "Base de Datos"
DB[MySQL 8.0]
end
subgraph "Servicios Externos"
S3[AWS S3]
STRIPE[Stripe API]
GEMINI[Google Gemini AI]
EMAIL[AWS SES]
end
WEB --> APP
MOB --> APP
APP --> UI
APP --> STATE
APP --> AI_CLIENT
APP <--> API
API --> AUTH
API --> VIEWS
VIEWS --> MODELS
MODELS --> DB
API <--> S3
API <--> STRIPE
AI_CLIENT <--> GEMINI
API <--> EMAIL
Principios Arquitectónicos
Separación de Responsabilidades
- Frontend: Interfaz de usuario y experiencia
- Backend: Lógica de negocio y APIs
- Base de Datos: Persistencia de datos
- Servicios Externos: Funcionalidades especializadas
Escalabilidad
- Arquitectura horizontal preparada
- Balanceadores de carga
- Caché distribuido
- Auto-scaling configurado
Seguridad
- Autenticación JWT
- Encriptación AES-256
- HTTPS obligatorio
- Validación de entrada
Mantenibilidad
- Código modular
- Documentación completa
- Testing automatizado
- Monitoreo continuo
Stack Tecnológico
Frontend
- Framework: Next.js con App Router
- Lenguaje: TypeScript
- UI Library: Chakra UI
- Estado: Redux Toolkit + Redux Persist
- Styling: Tailwind CSS + Emotion
Backend
- Framework: Django 5.1.2
- API: Django REST Framework 3.15.2
- Lenguaje: Python 3.8+
- Base de Datos: MySQL 8.0
- Autenticación: JWT + BCrypt
Servicios
- Almacenamiento: AWS S3
- Pagos: Stripe
- IA: Google Gemini 2.5 Flash
- Email: AWS SES
- Hosting: AWS EC2 + RDS
Patrones de Diseño
Frontend
- Component Pattern: Componentes reutilizables
- Container Pattern: Separación UI/Lógica
- Hook Pattern: Lógica compartida
- Redux Pattern: Estado global
Backend
- MVC Pattern: Modelo-Vista-Controlador
- Repository Pattern: Abstracción de datos
- Service Pattern: Lógica de negocio
- Decorator Pattern: Middleware y permisos
Flujo de Datos
Request Flow
Usuario → Frontend → API Gateway → Backend → Base de Datos
Response Flow
Base de Datos → Backend → JSON API → Frontend → Usuario
Authentication Flow
Login → JWT Token → Headers → Validation → Access
Ambiente de Desarrollo vs Producción
Desarrollo
- Frontend: localhost:3002
- Backend: localhost:8000
- Base de Datos: Docker MySQL
- Debug: Habilitado
Producción
- Frontend: CDN + Load Balancer
- Backend: EC2 Auto Scaling
- Base de Datos: RDS Multi-AZ
- Monitoring: CloudWatch