Saltar a contenido

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