Inventschario — Arquitectura del Sistema

Aplicación de inventario de dispositivos electrónicos • Python + Flask + SQLite • Local-first

Windows 11 Pro — Máquina Local (127.0.0.1) NAVEGADOR (Edge) SPA Shell index.html + Router Componentes Table | Form | Modal API Client fetch wrapper + errors Páginas Dashboard | Inventory Setup Wizard 6 pasos de config HTML + CSS + Alpine.js Sin build step • System fonts • WCAG 2.1 AA Router hash-based • Componentes vanilla JS HTTP localhost API GATEWAY — Flask REST/JSON /api/v1/devices CRUD + History /api/v1/import|export CSV operations /api/v1/backups Create | Restore | List /api/v1/config Settings + Labels Middleware CORS • JSON parse • Errors Blueprint pattern • Solo escucha 127.0.0.1 • Sin exposición a red CAPA DE SERVICIOS — Lógica de Negocio DeviceService CRUD + Lifecycle BackupService Schedule + Gzip ImportService CSV + Mapper ExportService CSV + Labels ConfigService KV Store + Labels CAPA DE DATOS — SQLite (WAL mode) DeviceRepo devices table HistoryRepo device_history ConfigRepo app_config + labels BackupRepo backup_log SQLite inventschario.db WAL mode • Foreign Keys 6 tablas • 4 índices únicos %APPDATA%/inventschario/ Leyenda: Frontend API Gateway Servicios Datos Límite de máquina

Frontend

  • • HTML + CSS + Alpine.js (sin framework pesado)
  • • Router hash-based para SPA
  • • Componentes vanilla JS reutilizables
  • • WCAG 2.1 AA — contraste, teclado, labels
  • • CSS custom properties para theming

Backend

  • • Python 3.11+ con Flask
  • • API REST JSON sobre localhost
  • • Blueprint pattern por dominio
  • • Service layer separada de HTTP
  • • Schedule library para backups

Datos

  • • SQLite con WAL mode
  • • Repository pattern por tabla
  • • Foreign keys + índices
  • • Migraciones versionadas
  • • Backups gzip en %APPDATA%

Empaquetado

  • • PyInstaller → un único .exe (~30MB)
  • • Frontend empaquetado en el bundle
  • • Instalación en perfil de usuario
  • • Acceso directo en Menú Inicio
  • • Sin dependencias de runtime

Seguridad

  • • Servidor solo en 127.0.0.1
  • • Sin exposición a la red
  • • Validación en backend (no confiar en frontend)
  • • Datos en %APPDATA% (aceso restringido)
  • • Foreign keys para integridad

Modularidad

  • • API REST como contrato frontend↔backend
  • • Frontend reemplazable sin tocar backend
  • • Plugin architecture para import/export
  • • Migración a .NET 8 o Go documentada
  • • Cada service es independiente