Stack tecnológico¶
Fase inicial
Las decisiones de tecnología reflejan la visión actual del proyecto. Algunas pueden ajustarse conforme se avance en el desarrollo.
Resumen del stack¶
| Componente | Tecnología | Propósito |
|---|---|---|
| Base de datos | PostgreSQL | Almacenamiento relacional de toda la información del sistema |
| Frontend | Quasar Framework + CapacitorJS | App móvil (Android/iOS) y aplicación web desde un mismo código |
| Backend | Django + FastAPI | API REST, lógica de negocio, panel administrativo |
Base de datos — PostgreSQL¶
Se eligió PostgreSQL como motor de base de datos relacional por:
- Robustez y estabilidad comprobada
- Soporte nativo de JSON para datos semi-estructurados
- Excelente integración con Django (ORM nativo)
- Capacidad de escalamiento para las necesidades del proyecto
- Licencia open source
Frontend — Quasar Framework + CapacitorJS¶
Quasar Framework permite desarrollar con Vue.js una interfaz que se compila para múltiples plataformas:
- SPA (Single Page Application) para web
- App móvil nativa mediante CapacitorJS (Android e iOS)
- Componentes UI consistentes y optimizados para móvil
- Diseño Material Design integrado
CapacitorJS actúa como puente entre la app web y las APIs nativas del dispositivo:
- Acceso a cámara (para fotos de órdenes/paquetes)
- Notificaciones push
- Almacenamiento local
- Código compartido entre web y móvil
flowchart TD
A["Código Quasar (Vue.js)"] --> B["Web SPA"]
A --> C["CapacitorJS"]
C --> D["App Android"]
C --> E["App iOS"]
Backend — Django + FastAPI¶
Se usa una combinación de dos frameworks Python complementarios:
Django¶
- Panel administrativo listo para usar (ideal para el backoffice)
- ORM robusto para PostgreSQL
- Sistema de autenticación y permisos integrado
- Gestión de modelos de datos y migraciones
- Manejo de archivos y media (fotos de paquetes, capturas de órdenes)
FastAPI¶
- Endpoints de API de alto rendimiento
- Validación automática con Pydantic
- Documentación interactiva (Swagger/OpenAPI) generada automáticamente
- Ideal para las operaciones que requieren baja latencia (tracking, notificaciones)
- Async nativo para operaciones concurrentes
flowchart LR
subgraph Backend
D["Django"] --> DB["PostgreSQL"]
F["FastAPI"] --> DB
D --> Admin["Panel Admin"]
F --> API["API REST"]
end
subgraph Frontend
Q["Quasar App"] --> API
Q --> Admin
end
Arquitectura general¶
flowchart TD
subgraph Cliente
Web["App Web (Quasar SPA)"]
Mobile["App Móvil (Quasar + Capacitor)"]
end
subgraph Servidor
FastAPI["FastAPI — API REST"]
Django["Django — Admin / Auth / ORM"]
DB["PostgreSQL"]
end
Web --> FastAPI
Mobile --> FastAPI
FastAPI --> DB
Django --> DB
FastAPI -.-> Django