How benjaminotalora222/panapp works
1. Arquitectura general
- PanApp es una aplicación web PHP monolítica con estructura tipo MVC artesanal: controllers/, models/, views/, más un front controller en public/index.php.
- No se ve un framework pesado; la lógica está organizada por módulos de negocio, con una separación clara entre acceso HTTP, lógica de aplicación y presentación.
2. Punto de entrada y flujo principal
- El navegador entra por public/index.php, que funciona como puerta de entrada de la aplicación.
- Desde ahí se delega a los controladores según la acción solicitada, y estos devuelven vistas dentro de views/.
- Este patrón hace que el flujo típico sea: request → controller → base de datos/lógica → view → response.
3. Capa de configuración y persistencia
- La conexión a datos se centraliza en config/database.php.
- La base de datos está respaldada por el script sql/panaderia2.sql, lo que indica que el sistema depende de una BD relacional para usuarios, ventas, inventario, productos y demás entidades.
- El diseño parece orientado a operaciones CRUD y transacciones simples sobre tablas del dominio de panadería.
4. Autenticación y gestión de usuarios
- Los componentes principales de identidad son AuthController, RegistroController, UsuarioController y AdminUsuarioController.
- Existe un modelo explícito en models/usuario.php, lo que sugiere que al menos la entidad usuario tiene una capa de modelo dedicada.
- Las vistas views/usuarios/login.php y views/usuarios/registre.php soportan el acceso y el alta de cuentas.
- El sistema maneja roles, especialmente Administrador y Cajero, con dashboards diferenciados.
5. Dashboards y control por rol
- views/dashboard/admin.php y views/dashboard/cajero.php muestran que la navegación y la experiencia de usuario cambian según permisos.
- Esto implica una frontera funcional importante: el controlador de autenticación define sesión/rol, y la vista de dashboard actúa como punto de entrada operativo para cada perfil.
6. Ventas como núcleo operativo
- El módulo de ventas está dividido en VentaController y VentaDetalleController.
- Las vistas views/ventas/crear.php, detalle.php e index.php sugieren un flujo de venta en dos niveles: cabecera de venta y detalle de ítems.
- Arquitectónicamente, ventas es un proceso transaccional que probablemente impacta inventario y reportes, por lo que es uno de los principales puntos de integración entre módulos.
7. Inventario e insumos
- InventarioController y InsumoController manejan el control de stock y materia prima.
- Las vistas views/inventario/index.php y ajuste.php indican que el sistema contempla ajustes de inventario, no solo consulta.
- Este subsistema es clave para el control de entradas y salidas de insumos, uno de los objetivos centrales del proyecto.
8. Catálogos maestros
- ProductoController y ProveedorController administran los datos base que alimentan ventas e inventario.
- Las vistas CRUD en views/productos/ y views/proveedores/ muestran que estas entidades funcionan como catálogos operativos.
- En la arquitectura, estos módulos son dependencias de otros procesos: una venta requiere productos; el inventario depende de insumos y proveedores.
9. Reportes y salida documental
- views/reportes/index.php y exportar_pdf.php indican un subsistema de consulta y exportación de reportes.
- Aunque no se ve la librería concreta, el enfoque es generar salidas documentales para análisis o archivo, probablemente usando datos consolidados de ventas e inventario.
10. Interfaz compartida y composición de vistas
- views/layouts/header.php, sidebar.php, footer.php y chatbot.php forman una capa común de UI reutilizable.
- Esto sugiere un layout base con navegación persistente y componentes compartidos entre módulos, reduciendo duplicación visual.
- ChatbotController y su layout asociado apuntan a un asistente o ayuda contextual integrada en la interfaz, aunque no parece ser el núcleo del negocio.
11. Documentación técnica y trazabilidad
- La carpeta Documentacion/tecnica/ contiene documentos por módulo (controller_auth, controller_venta, controller_inventario, etc.), lo que refuerza la organización por dominios.
- También hay historias de usuario y un documento de arquitectura, señal de que el sistema fue diseñado con trazabilidad funcional y técnica.
- Para un diagrama arquitectónico, esta documentación sirve para validar límites de subsistemas y responsabilidades.
12. Nota sobre tecnologías
- Aunque el README menciona “Python”, el árbol del repositorio muestra claramente una implementación en PHP con estructura MVC y SQL.
- La tecnología de base de datos parece relacional; no se observan servicios externos ni microservicios. La arquitectura es principalmente interna, modular y centrada en una sola aplicación web.
Main entry points: index.php Front controller · database.php DB config · header.php Layout · VentaController.php Ventas
Components 22
Entrada web
Punto de arranque HTTP y bootstrap de la app
- Front controller · Recibe requests y delega al resto de la app
public/index.php
Aplicación
Controladores y modelo central
- Auth · Autenticación, sesión y roles
controllers/AuthController.php - Registro · Alta de usuarios
controllers/RegistroController.php - Usuarios · Gestión operativa de usuarios
controllers/UsuarioController.php - Admin usuarios · Administración de cuentas y permisos
controllers/AdminUsuarioController.php - Usuario · Modelo de usuario
models/usuario.php - Ventas · Flujo principal de venta
controllers/VentaController.php - Detalle venta · Ítems y detalle transaccional de la venta
controllers/VentaDetalleController.php - Inventario · Stock, ajustes y control de existencias
controllers/InventarioController.php - Insumos · Materia prima e insumos
controllers/InsumoController.php - Productos · Catálogo de productos
controllers/ProductoController.php - Proveedores · Catálogo de proveedores
controllers/ProveedorController.php - Chatbot · Asistencia contextual integrada
controllers/ChatbotController.php
Presentación
Vistas y composición de interfaz
- Layout · Header, sidebar y footer compartidos
views/layouts/header.php - Auth views · Pantallas de login y registro
views/usuarios/login.php - Dashboards · Paneles por rol: admin y cajero
views/dashboard/admin.php - Sales views · Crear, ver y detallar ventas
views/ventas/crear.php - Catalog views · CRUD visual de productos, proveedores e insumos
views/productos/index.php - Inventory views · Consulta y ajuste de inventario
views/inventario/index.php - Reports · Consulta y exportación PDF
views/reportes/index.php
Connections 41
- Front controller → Auth: dispatch · Enruta acciones de autenticación y sesión
- Front controller → Registro: dispatch · Enruta el alta de cuentas
- Front controller → Usuarios: dispatch · Enruta gestión de usuarios
- Front controller → Admin usuarios: dispatch · Enruta administración de cuentas y roles
- Front controller → Ventas: dispatch · Enruta el flujo de ventas
- Front controller → Detalle venta: dispatch · Enruta el detalle transaccional de venta
- Front controller → Inventario: dispatch · Enruta ajustes y consulta de stock
- Front controller → Insumos: dispatch · Enruta gestión de insumos
- Front controller → Productos: dispatch · Enruta catálogo de productos
- Front controller → Proveedores: dispatch · Enruta catálogo de proveedores
- Front controller → Chatbot: dispatch · Enruta la asistencia contextual
- Auth → DB config: uses · Consulta persistencia y sesión de usuario
- Registro → DB config: uses · Guarda nuevos usuarios
- Usuarios → Usuario: uses · Opera sobre el modelo de usuario
- Admin usuarios → Usuario: uses · Administra cuentas y roles
- Ventas → DB config: uses · Lee y escribe ventas
- Detalle venta → DB config: uses · Persiste líneas de venta
- Inventario → DB config: uses · Controla existencias y ajustes
- Insumos → DB config: uses · Gestiona materia prima
- Productos → DB config: uses · Mantiene catálogo de productos
- Proveedores → DB config: uses · Mantiene catálogo de proveedores
- Auth → Auth views: renders · Entrega login y registro
- Registro → Auth views: renders · Entrega alta de usuario
- Usuarios → Dashboards: renders · Recicla paneles y gestión de usuarios
- Admin usuarios → Dashboards: renders · Usa vistas de administración
- Ventas → Sales views: renders · Presenta creación y listado de ventas
- Detalle venta → Sales views: renders · Presenta detalle de venta
- Inventario → Inventory views: renders · Presenta inventario y ajustes
- Insumos → Catalog views: renders · Presenta CRUD de insumos
- Productos → Catalog views: renders · Presenta CRUD de productos
- Proveedores → Catalog views: renders · Presenta CRUD de proveedores
- Chatbot → Layout: integrates · Se monta dentro de la UI compartida
- Auth views → Layout: composes · Usa la estructura visual compartida
- Dashboards → Layout: composes · Usa navegación y footer comunes
- Sales views → Layout: composes · Usa navegación y footer comunes
- Catalog views → Layout: composes · Usa navegación y footer comunes
- Inventory views → Layout: composes · Usa navegación y footer comunes
- Reports → Layout: composes · Usa navegación y footer comunes
- DB config → Schema: backed by · La conexión opera sobre el esquema SQL
- Ventas → Reports: feeds · Sus datos alimentan reportes
- Inventario → Reports: feeds · Sus datos alimentan reportes