- Prefijo v2: MCH - TRACEABILITY-MASTER.yml creado - Listo para integracion como submodulo Workspace: v2.0.0 | SIMCO: v4.0.0
354 lines
9.8 KiB
YAML
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/)"
|