michangarrito/backups/orchestration-backup-2026-01-10/orchestration/inventarios/FRONTEND_INVENTORY.yml
rckrdmrd 97f407c661 [MIGRATION-V2] feat: Migrar michangarrito a estructura v2
- Prefijo v2: MCH
- TRACEABILITY-MASTER.yml creado
- Listo para integracion como submodulo

Workspace: v2.0.0 | SIMCO: v4.0.0
2026-01-10 11:28:54 -06:00

354 lines
9.8 KiB
YAML

# FRONTEND INVENTORY - MiChangarrito
# Version: 2.0.0
# Ultima actualizacion: 2026-01-10
# Sistema: SIMCO - NEXUS v4.0
metadata:
proyecto: "michangarrito"
componente: "frontend-web"
framework: "React 19.2.0"
bundler: "Vite 7.2.4"
styling: "TailwindCSS 4.1.18"
puerto: 3140
estado: "100% paginas completadas"
actualizado: "2026-01-10"
actualizado_por: "Agente Orquestador"
# ============================================================================
# CONFIGURACION
# ============================================================================
configuracion:
puerto: 3140
proxy_api: "http://localhost:3141"
api_prefix: "/api/v1"
router: "React Router DOM 7.11.0"
state_management: "Context API + TanStack React Query 5.90.16"
http_client: "Axios 1.13.2"
icons: "Lucide React 0.562.0"
# ============================================================================
# RESUMEN
# ============================================================================
resumen:
total_paginas: 9
total_componentes: 1
total_contexts: 1
total_servicios_api: 6
arquitectura: "SPA"
# ============================================================================
# ESTRUCTURA DE CARPETAS
# ============================================================================
estructura:
root: "apps/frontend"
src: "apps/frontend/src"
componentes: "apps/frontend/src/components"
paginas: "apps/frontend/src/pages"
contexts: "apps/frontend/src/contexts"
lib: "apps/frontend/src/lib"
assets: "apps/frontend/src/assets"
# ============================================================================
# PAGINAS
# ============================================================================
paginas:
- nombre: "Dashboard"
ruta: "/dashboard"
archivo: "pages/Dashboard.tsx"
descripcion: "Panel principal con metricas y resumen del negocio"
protegida: true
estado: completado
caracteristicas:
- Tarjetas de estadisticas (ventas, pedidos, clientes, fiados)
- Pedidos recientes
- Alertas de stock bajo
- nombre: "Products"
ruta: "/products"
archivo: "pages/Products.tsx"
descripcion: "Catalogo de productos con busqueda y filtrado"
protegida: true
estado: completado
caracteristicas:
- Busqueda por nombre
- Filtrado por categoria
- Vista en grid
- Acciones editar/eliminar
- nombre: "Orders"
ruta: "/orders"
archivo: "pages/Orders.tsx"
descripcion: "Gestion de pedidos con seguimiento de estado"
protegida: true
estado: completado
caracteristicas:
- Filtrado por estado
- Flujo de transicion de estados
- Informacion de pedido y cliente
- nombre: "Customers"
ruta: "/customers"
archivo: "pages/Customers.tsx"
descripcion: "Directorio de clientes con historial de compras"
protegida: true
estado: completado
caracteristicas:
- Busqueda por nombre/telefono
- Informacion de compras
- Balance de fiado
- nombre: "Fiado"
ruta: "/fiado"
archivo: "pages/Fiado.tsx"
descripcion: "Gestion de cuentas de credito y cobranza"
protegida: true
estado: completado
caracteristicas:
- Resumen de totales
- Lista de fiados pendientes/vencidos
- Registro de pagos
- Envio de recordatorios
- nombre: "Inventory"
ruta: "/inventory"
archivo: "pages/Inventory.tsx"
descripcion: "Control de existencias y movimientos"
protegida: true
estado: completado
caracteristicas:
- Resumen de inventario
- Tabla de productos con stock
- Indicadores visuales
- Movimientos recientes
- nombre: "Settings"
ruta: "/settings"
archivo: "pages/Settings.tsx"
descripcion: "Configuracion de la tienda y preferencias"
protegida: true
estado: completado
caracteristicas:
- Informacion del negocio
- Configuracion de fiado
- WhatsApp Business
- Notificaciones
- Plan de suscripcion
- nombre: "Login"
ruta: "/login"
archivo: "pages/Login.tsx"
descripcion: "Autenticacion de usuarios"
protegida: false
estado: completado
caracteristicas:
- Campos telefono (10 digitos) y PIN (4-6 digitos)
- Validacion HTML5
- Redireccion a dashboard
- nombre: "Register"
ruta: "/register"
archivo: "pages/Register.tsx"
descripcion: "Registro de nuevos negocios"
protegida: false
estado: completado
caracteristicas:
- Campos obligatorios (negocio, propietario, tipo, telefono, PIN)
- Campos opcionales (email)
- Tipos de negocio (tiendita, fonda, taqueria, etc)
- Validacion de PIN coincidente
# ============================================================================
# COMPONENTES
# ============================================================================
componentes:
layout:
- nombre: "Layout"
archivo: "components/Layout.tsx"
lineas: 168
descripcion: "Layout principal con sidebar y navegacion"
caracteristicas:
- Sidebar fijo (desktop) / colapsable (mobile)
- 7 items de navegacion
- Header mobile con menu
- Bloque de usuario
- Boton de logout
- Outlet para paginas
# ============================================================================
# CONTEXTS
# ============================================================================
contexts:
- nombre: "AuthContext"
archivo: "contexts/AuthContext.tsx"
lineas: 119
descripcion: "Gestion de autenticacion"
provee:
- user (User | null)
- tenant (Tenant | null)
- isAuthenticated (boolean)
- isLoading (boolean)
- login(phone, pin)
- register(data)
- logout()
persistencia: localStorage (accessToken, refreshToken, user, tenant)
# ============================================================================
# SERVICIOS API
# ============================================================================
lib:
- nombre: "api"
archivo: "lib/api.ts"
lineas: 132
descripcion: "Cliente HTTP Axios con endpoints API"
grupos:
- authApi:
- register(data)
- login(phone, pin)
- refresh(refreshToken)
- changePin(...)
- productsApi:
- getAll(params)
- getById(id)
- create(data)
- update(id, data)
- delete(id)
- ordersApi:
- getAll(params)
- getById(id)
- create(data)
- updateStatus(id, status)
- customersApi:
- getAll(params)
- getById(id)
- create(data)
- update(id, data)
- getFiado(id)
- inventoryApi:
- getMovements(params)
- createMovement(data)
- getLowStock()
- getAlerts()
- dashboardApi:
- getStats()
- getSalesChart(period)
- getTopProducts()
interceptores:
- request: "Agrega Bearer token"
- response: "Maneja 401, intenta refresh, limpia localStorage"
# ============================================================================
# RUTAS
# ============================================================================
rutas:
publicas:
- path: "/login"
componente: "Login"
- path: "/register"
componente: "Register"
protegidas:
- path: "/"
componente: "Layout"
redirect: "/dashboard"
- path: "/dashboard"
componente: "Dashboard"
- path: "/products"
componente: "Products"
- path: "/orders"
componente: "Orders"
- path: "/customers"
componente: "Customers"
- path: "/fiado"
componente: "Fiado"
- path: "/inventory"
componente: "Inventory"
- path: "/settings"
componente: "Settings"
wrappers:
- ProtectedRoute: "Verifica isAuthenticated, redirige a /login"
- PublicRoute: "Redirige a /dashboard si autenticado"
# ============================================================================
# ESTILOS
# ============================================================================
estilos:
framework: "TailwindCSS 4.1.18"
plugins:
- "@tailwindcss/forms"
colores_custom:
primary: "Orange (50-900)"
secondary: "Green (50-900)"
componentes_css:
- ".btn-primary"
- ".btn-secondary"
- ".btn-outline"
- ".card"
- ".input"
# ============================================================================
# DEPENDENCIAS PRINCIPALES
# ============================================================================
dependencias:
"react": "19.2.0"
"react-dom": "19.2.0"
"react-router-dom": "7.11.0"
"@tanstack/react-query": "5.90.16"
"axios": "1.13.2"
"tailwindcss": "4.1.18"
"lucide-react": "0.562.0"
"clsx": "2.1.1"
devDependencias:
"typescript": "5.9.3"
"vite": "7.2.4"
"@vitejs/plugin-react": "*"
"eslint": "*"
"postcss": "*"
"autoprefixer": "*"
# ============================================================================
# COMANDOS
# ============================================================================
comandos:
dev: "npm run dev"
build: "npm run build"
preview: "npm run preview"
lint: "npm run lint"
# ============================================================================
# CONFIGURACION VITE
# ============================================================================
vite:
puerto: 3140
proxy:
"/api":
target: "http://localhost:3141"
changeOrigin: true
secure: false
# ============================================================================
# NOTAS
# ============================================================================
notas:
- "Responsive design para tablet y desktop"
- "Dark mode pendiente"
- "PWA pendiente"
- "Offline mode pendiente"
- "Paginas usan datos mock, pendiente integracion completa con API"
- "React Query configurado con staleTime 5min, retry 1"
- "Hooks personalizados pendientes (src/hooks/)"