Escanea un zapato con la cámara, mira su stock, véndelo y decide con datos. Prototipo académico con 725 modelos.
Translation pending
CommerceJavaScript · HTMLGitHub @Gris999OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Prototipo académico: inventario de calzado con visión artificial (caso Manaco)
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Prototipo académico (caso de estudio Manaco, 6.º semestre de Ingeniería de Sistemas, Ciencia de Datos e Inteligencia de Negocios) que propone un inventario inteligente con visión artificial para las tiendas de calzado de Manaco (Bata Bolivia).
Demo en vivo: https://gris999.github.io/manaco-vision/ (próximamente también en manaco.datahuba.com)
sw.js). Al publicar cambios, sube VERSION en sw.js y la app mostrará "Hay una nueva versión".Los datos de operación (stock, ventas y cierres) son simulados y se guardan solo en el navegador. Las fotos y precios del catálogo vienen de la tienda en línea pública de la empresa y se usan con fines académicos.
Al entrar, la app pregunta "¿Quién eres hoy?" (sin contraseña, porque es un prototipo):
| Rol | Pantallas | Para qué |
|---|---|---|
| 👟 Vendedor | Escáner, Ventas | Reconocer el zapato, ver precio y stock, y vender |
| 🏬 Encargado de tienda | Caja, Conteo, Inventario, Escáner | Apertura y arqueo de caja, Reporte Z, conteo de inventario |
| 📊 Gerente | Resumen, Mercado, Inventario | Decidir con datos de las 3 tiendas y del mercado |
Deep link: ?rol=vendedor|encargado|gerente.
stock.move de Odoo): el stock solo cambia por moverStock() (venta, reposición, ajuste por conteo, saldo inicial), con el saldo después de cada movimiento; se verifica que kardex = stock.pos.session: sesión con id único e independiente de la fecha, ingresos y retiros de efectivo (cash in/out), arqueo con borrador y Reporte Z con estado de resultados.js/dominio.js (dinero en centavos) con pruebas unitarias: npm test. Migración de esquema sin perder datos (D.migrar).docs/informes/AUDITORIA_SENIOR.md.| Vista | Para quién | Función |
|---|---|---|
| Escáner | Vendedor | La cámara reconoce el modelo entre 725, muestra precio y stock por tienda, permite vender o reponer, y ofrece un top-3 tocable si la IA duda |
| Inventario | Almacén | 725 modelos con búsqueda, filtros (Dama, Hombre, Infantil, tipo, stock bajo) y stock por tienda |
| Ventas | Vendedor | Registro manual con buscador y resumen del día |
| Cierre del día | Encargado | Conteo físico contra lo esperado (inicio − ventas) y detección de faltantes en pares y Bs |
| Resumen | Gerencia | Dashboard en lenguaje simple: periodo (hoy, 7 o 30 días), filtro de tienda, semáforo, "¿qué hacer hoy?" con acciones, ranking, tiendas, categorías, ventas diarias contra el promedio y avance de metas SMART |
| Mercado | Gerencia | Explorador de los 230 registros depurados de la base de comercio exterior (Excel del caso): filtros, frase-resumen, gráfico por año, socios, valor contra cantidad y tabla ordenable |
index.html Una sola página (HTML + Tailwind CDN + JS vanilla). Sin build.
catalogo.json 725 modelos: id, nombre, marca, categoría, sección, precio, imagen
mercado.json 230 registros: f(I/E), a(año), c(categoría), s(socio), v(USD), q(pares)
img/ Miniatura por modelo (320 px)
mobilenet/ MobileNetV2 (TF.js GraphModel) servido localmente, inputRange [0,1]
modelo/ Cabeza clasificadora (Dense 512 → 726 clases) + clases.json
herramientas/ Scripts del pipeline (datos, entrenamiento, Word, PPT)
localStorage (clave manacoVision_v5). El botón "Reiniciar datos de demostración" regenera los datos simulados de 60 días.herramientas/)analisis.py: limpia el Excel (240 → 230 filas; agrega 10 claves duplicadas; no hay filas "Mundo"), calcula indicadores y genera los gráficos.catalogo_completo.py: lee el catálogo público VTEX de bata.com.bo (834 productos). Se quedan los 725 calzados con 2 o más fotos (2.740 fotos).aumentar.py: 30 variaciones por modelo (fondo, giro, escala, luz, desenfoque) más 400 imágenes de la clase "otro". Total ≈ 22.000.entrenar.js: calcula los embeddings con tfjs-node, entrena la cabeza densa y guarda en caché los embeddings para reentrenar en ~1 minuto.Métricas (validación aleatoria 20 %, 4.430 imágenes no vistas): top-1 82,3 % y top-3 94,7 % (herramientas/metricas_validacion.json).
El modelo publicado se reentrenó con el 100 % de los datos.
Lo definí a partir de un análisis de Nike, Adidas, Puma, FairPlay y el sitio oficial de Manaco:
| Token | Valor | Origen |
|---|---|---|
| Marca | #E40140 (hover #C40036) | Rojo oficial del sitio manaco.com.bo |
| Tinta | #111111 | Patrón Nike (casi negro) |
| Gris de texto | #575756 / #707072 | Manaco / Nike |
| Superficie | #F5F5F5 | Fondo de producto, patrón Nike |
| Línea | #E5E5E5 | Bordes de tarjetas |
| Estados | ok #007D48, aviso #B45309, error #B91C1C | Semáforo del dashboard |
| Tipografía | Poppins 400–800 | Manaco usa Poppins + Arlon |
| Botones | Píldora (radio 999 px), mínimo 46 px de alto | Patrón Nike/Puma; objetivo táctil ≥ 44 px |
Principios: base neutra, un solo color de marca como acento (CTA principal y alertas), fotos de producto sobre gris claro, titulares pesados con tracking negativo.
#dashboard, #mercado…).lang="es", enlace "saltar al contenido", aria-label en botones de ícono, aria-live en resultados y avisos, aria-pressed y aria-current, foco visible, prefers-reduced-motion.esc()) antes de insertarlos en el HTML.localStorage lleno.loading="lazy", paginación ("Mostrar más"), búsqueda con debounce, la cámara se apaga al salir del escáner.Metodología, requisitos, arquitectura, pruebas y trazabilidad con el caso: docs/README.md.