Estructura de carpetas
Objetivo
Entender rápidamente la arquitectura “real” del repo para ubicar pantallas, lógica, rutas, templates, API y librerías.
Vista general (raíz del proyecto)
- controllers/ : lógica de negocio y acceso a datos por entidad/módulo.
Ejemplos: userController.php , clientController.php
- pages/ : “pantallas” y endpoints (archivos PHP que se incluyen/renderizan por ruta).
Mapa: pages/
- templates/ : layout y componentes de UI (League Plates).
Mapa: templates/
- system/ : núcleo de la app (router, helpers, DB, clases base).
Mapa: system/
- lib/ : assets/librerías frontend (CSS/JS) y swagger UI embebido.
Mapa: lib/
- routes.php : tabla de rutas (URL → archivo en pages/ ).
Referencia: routes.php
- .htaccess : reescritura para que todo pase por routes.php .
Referencia: .htaccess
¿Cómo se sirve una pantalla web? (flujo mínimo)
- 1. El navegador solicita una URL (ej. /clients )
- 2. Apache redirige a routes.php por rewrite: .htaccess
- 3. routes.php registra el mapeo URL → pages/... : routes.php
- 4. El router:
- Carga vendor/autoload.php + .env
- Crea $GLOBALS['db']
- Inicializa templates
- Valida login/permisos según aplique
Referencia: router.php
- 5. Se incluye el archivo final dentro de pages/ :
- Ejemplo dashboard: dashboard.php
pages/: cómo está organizado
- pages/user/ : login, registro, perfil, settings
Mapa: pages/user
- pages/client/ , pages/project/ , pages/proposal/ , pages/report/ , etc.: módulos funcionales por carpeta
Mapa: pages/client , pages/project
- pages/api/ : endpoints de API que responden JSON (muchos están bajo /api/... )
Mapa: pages/api
- pages/api/system/ : endpoints “infra” (auth, uploads, mail, datatables)
Mapa: pages/api/system
- pages/pdf/ : generación/render de PDFs y plantillas de documentos
Mapa: pages/pdf
templates/: layout y componentes
- Templates base de UI:
- Header: header.php
- Footer: footer.php
- Menú: menu.php
- Email templates:
- email_base.php
system/: piezas que todo dev debe conocer
- Router y middlewares (login, CSRF, permisos, route matching):
router.php
- Helpers (utilidades compartidas, llamadas a API internas, traducción, tablas, etc.):
helpers.php
- DB wrapper (mysqli + prepared statements):
db.php
Convención práctica para ubicar algo rápido
- “Quiero cambiar una pantalla”: buscar en routes.php la ruta → ver archivo en pages/... → ver qué controller instancia.
- “Quiero cambiar lógica”: buscar el *Controller.php que usa esa página (normalmente mismo nombre del módulo).
- “Quiero cambiar layout/menú”: revisar templates/ .
- “Quiero ver endpoints”: revisar routes.php (sección API) y pages/api/ .