-
Notifications
You must be signed in to change notification settings - Fork 0
Estructura del Proyecto
Technomantus Corvi edited this page Sep 5, 2026
·
1 revision
tanuki_base/
│
├── public/ ← ÚNICA carpeta expuesta a la web
│ ├── index.php ← Punto de entrada (solo llama a App::run())
│ ├── .htaccess ← Reglas de rewrite para Apache
│ └── assets/
│ ├── css/app.css
│ └── js/app.js
│
├── routes.php ← Definición de todas las rutas
├── utils.php ← Helpers globales: e(), view(), env(), redirect()…
├── auth.php ← Helpers de auth por sesión (tanuki_login, inerte hasta activarse)
│
├── .env ← Variables de entorno locales (NO en git)
├── .env-example ← Plantilla documentada
├── nginx.config ← Referencia de bloque de servidor Nginx
│
├── config/
│ ├── database.php ← Clase Database (Singleton PDO, mysql/pgsql/sqlite)
│ ├── redis.php ← Clase Redis (opcional, phpredis nativo)
│ ├── mongo.php ← Clase Mongo (opcional, mongodb/mongodb)
│ ├── mail.php ← Clase Mail (SMTP, usada por tanuki_login)
│ └── nav.php ← Entradas del menú de navegación
│
├── core/
│ ├── App.php ← Bootstrap: carga de env, autoloader, router
│ ├── Controller.php ← Clase base de controladores
│ ├── Model.php ← Base ligera tipo Active Record
│ └── Request.php ← Encapsulado de la petición HTTP
│
├── controllers/ ← Tus controladores (extienden Controller)
├── models/ ← Tus modelos (extienden Model)
├── views/ ← Plantillas PHP puras
│ └── errors/ ← Vistas de error 404 / 500 / 503
├── includes/
│ ├── head.php ← HTML head + nav + menú usuario + selector idioma + apertura <main>
│ └── footer.php ← Cierre </main> + footer + app.js
├── lang/ ← Diccionarios de traducción (en.json, es.json, ...)
│
├── admin/ ← Extensión tanuki_admin — totalmente autocontenida
│ ├── admin.php ← Registro de recursos
│ ├── AdminController.php ← Controlador CRUD genérico
│ ├── create-superuser.php ← Script CLI
│ └── templates/ ← Plantillas de admin independientes
│
└── tests/ ← Tests de PHPUnit (ver Testing)
Todo excepto public/ queda fuera de la raíz de documentos del servidor web. Esto significa que core/, controllers/, models/ y config/ nunca pueden pedirse directamente por URL, sin importar cómo esté configurado el servidor — las clases PHP del framework simplemente no son alcanzables desde fuera. Es el mismo patrón que usan Laravel, Symfony y la mayoría de frameworks PHP modernos.
| Siempre presente y activo | Presente, inerte hasta que lo conectas |
|---|---|
core/, controllers/, models/, views/, includes/, config/database.php
|
auth.php, config/mail.php, admin/ (carpeta completa) |
Las piezas opcionales no tienen ningún coste en tiempo de ejecución hasta que registras sus rutas en routes.php — ver Autenticación y Panel admin.