Descripción general del stack tecnológico¶
KanjiIQ está construido con una filosofía de autoalojamiento y código abierto primero. Cada componente se ejecuta en infraestructura que controlamos, sin dependencia de proveedores.
Resumen de tecnologías¶
| Capa | Tecnología | Propósito |
|---|---|---|
| Frontend | Flutter Web | Framework de UI multiplataforma |
| Backend | Dart Frog | Servidor REST API ligero |
| Base de datos | PostgreSQL 15 | Almacén de datos principal con JSONB |
| Traducción | OpenAI API | Traducción dinámica de contenido |
| Orquestación | k3s (Kubernetes) | Orquestación de contenedores |
| Ingress | Traefik | Proxy inverso, terminación TLS, limitación de velocidad |
| TLS | cert-manager + Let's Encrypt | Gestión automatizada de certificados SSL |
| CI/CD | Forgejo Actions | Automatización de compilación, publicación y despliegue |
| Registro de contenedores | Forgejo Container Registry | Almacenamiento de imágenes Docker |
| Control de versiones | Forgejo (fork de Gitea) | Plataforma Git autoalojada |
| Alojamiento | Hetzner Dedicated Server | Proveedor de infraestructura |
| Administración | Flutter Web | Panel de administración para gestión de locales/analítica |
¿Por qué estas elecciones?¶
Dart en todas partes¶
La decisión arquitectónica más distintiva es usar Dart tanto para el frontend como para el backend:
- Flutter (Dart) para el frontend
- Dart Frog (Dart) para el backend
Esto permite:
- Definiciones de modelos compartidas entre cliente y servidor
- Experiencia en un solo lenguaje para todo el equipo
- Herramientas consistentes (analizador de Dart, formateador, framework de pruebas)
- Potencial para paquetes de lógica de negocio compartida
Stack autoalojado¶
KanjiIQ evita deliberadamente los servicios gestionados en la nube en favor de alternativas autoalojadas:
| Servicio gestionado | KanjiIQ usa | Beneficio |
|---|---|---|
| GitHub/GitLab | Forgejo | Control total, sin precio por usuario |
| Docker Hub | Forgejo Container Registry | Co-ubicado con el código fuente |
| GitHub Actions | Forgejo Actions | Misma sintaxis YAML, runners autoalojados |
| AWS RDS | PostgreSQL en k8s | Sin cargos por hora de base de datos |
| AWS ALB | Traefik | Integrado en k3s, gratuito |
| AWS ACM | cert-manager + Let's Encrypt | Certificados TLS gratuitos |
Eficiencia de costos¶
Todo el stack de producción se ejecuta en un único servidor dedicado de Hetzner, manteniendo los costos mensuales predecibles y significativamente más bajos que los servicios gestionados equivalentes en la nube. Consulta Infraestructura para más detalles.
Principios de arquitectura¶
- Contenedores primero: Cada componente está contenerizado con compilaciones Docker multi-etapa
- Infraestructura como código: Todos los manifiestos de Kubernetes están bajo control de versiones
- Ejecución sin root: Todos los contenedores se ejecutan como UID 1000 por seguridad
- Health checks: Cada contenedor tiene sondas de liveness y readiness
- Capacidad offline: El frontend funciona sin internet mediante caché SQLite local
- Consciente de la privacidad: Analítica compatible con GDPR/CCPA con anonimización automática