Duartec Inventario PWA es una aplicación web instalable para técnicos de campo que necesitan escanear equipos, registrar estado y exportar inventario sin depender de backend.
Está pensada para trabajar rápido en móvil:
- escaneo de seriales y códigos con cámara
- OCR para
S/N,MACymodelo - guardado local persistente
- exportación CSV compatible con Excel
- wrapper nativo con Capacitor para Android e iOS
- Escanea QR y códigos de barras con
html5-qrcode. - Lee seriales impresos cuando el código no ayuda.
- Normaliza serial, MAC y texto para reducir errores de campo.
- Crea y edita registros de forma manual.
- Guarda historial de movimientos por equipo.
- Detecta duplicados por serial normalizado.
- Filtra por estado y busca registros rápido.
- Genera CSV con BOM UTF-8.
- Usa
;como separador para Excel. - Mantiene un formato estable para auditoría y compartición.
- Persiste datos en
localStorage. - Funciona sin backend.
- Usa
service workerpara cache y arranque offline tras la primera carga.
- Frontend: HTML, CSS y JavaScript nativo
- Escaneo:
html5-qrcode+ OCR contesseract.js - Persistencia:
localStorage - Empaquetado nativo: Capacitor
- Salida: CSV compatible con Excel
- Node.js
- npm
npm install
npm run build:web
python3 -m http.server 4173Luego abre http://localhost:4173.
npm run check
npm test
npm run build:web- Abre la URL en Safari.
- Pulsa Compartir.
- Elige Añadir a pantalla de inicio.
- Concede acceso a cámara cuando se solicite.
- Abre la URL en Chrome.
- Instala la app desde el menú o el banner del navegador.
- Acepta permisos de cámara.
El proyecto incluye wrapper Capacitor para Android e iOS.
npm run build:web
npx cap sync android
npx cap sync iosnpx cap open android
npx cap open iosPara publicación móvil:
- Android:
bundle exec fastlane android build_release - iOS:
bundle exec fastlane ios build_release
La exportación usa este orden de columnas:
id;serial;modelo;estado;cliente;ubicacion;tecnico;fechaAlta;fechaUltimoMovimiento;observaciones;fuenteCaptura
Ejemplo de salida:
id;serial;modelo;estado;cliente;ubicacion;tecnico;fechaAlta;fechaUltimoMovimiento;observaciones;fuenteCaptura
"demo-1";"001AE8F7918F";"iPhone 13 128GB";"INSTALADO";"Hotel Costa Norte";"Lobby - Rack principal";"Luis Duarte";"2026-03-20T09:10:00.000Z";"2026-03-20T09:10:00.000Z";"Equipo operativo y entregado a recepción.";"camara"Existe una muestra en examples/export-ejemplo.csv.
.
├── css/
├── examples/
├── icons/
├── js/
├── vendor/
├── index.html
├── manifest.webmanifest
└── sw.js
El repositorio incluye workflows para:
- dependencia y seguridad
- Snyk
- revisión automática de PRs con IA
- publicación nativa con Fastlane
- mejorar accesibilidad y validaciones
- pulir iconos y detalle offline
- sincronización futura con Google Sheets
La exportación, el almacenamiento y el escaneo están optimizados para uso en campo. La experiencia depende de permisos, luz y enfoque del dispositivo.