Skip to main content

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/ .