Estructura del Proyecto
Un recorrido guiado por cada directorio en un proyecto de Nibiru.
my-app/├── core/ # Framework code (don't edit)│ ├── a/ # Abstract classes + adapters│ ├── c/ # Concrete classes (router, view, form types…)│ ├── f/ # Factories (db, form)│ ├── i/ # Interfaces│ ├── l/ # Composer vendor (yes, in core/)│ ├── t/ # Traits│ └── framework.php # Main bootstrap├── application/ # Your app│ ├── controller/ # *Controller.php files│ ├── model/ # Auto-generated models (from DB schema)│ ├── module/ # Modules (the second M in MMVC)│ │ └── users/ # each with its own MVC + plugins│ ├── settings/│ │ └── config/│ │ ├── settings.<env>.ini│ │ ├── database/ # numbered SQL migration files│ │ └── navigation/main.json│ └── view/│ ├── templates/ # Smarty .tpl files│ ├── templates_c/ # Smarty compile cache (auto)│ ├── cache/ # HTML cache (when caching=true)│ └── mockup/ # Static design mockups├── public/ # CSS / JS / images / fonts (web-served)├── nibiru # CLI binary├── index.php # Entry point├── composer.json└── vhost.conf # Sample nginx vhostConvenciones notables
Sección titulada «Convenciones notables»Controladores
Sección titulada «Controladores»- Archivo:
application/controller/<nombre>Controller.php - Clase:
Nibiru\<nombre>Controller extends Nibiru\Adapter\Controller - Métodos requeridos:
pageAction(),navigationAction(). Opcionales: cualquier<verbo>Action().
- Archivo:
application/view/templates/<nombre>.tplpara el controlador correspondiente. - Las subvistas van en
application/view/templates/<nombre>/<acción>.tpl. - Los parciales compartidos se encuentran en
application/view/templates/shared/.
Modelos
Sección titulada «Modelos»- Generados automáticamente en
application/model/. - Los nombres de los archivos coinciden con los nombres de las tablas. Cada clase extiende un adaptador
Db(MySQL\DboPostgreSQL\Db).
Módulos
Sección titulada «Módulos»- Carpeta:
application/module/<nombre>/ - Cada módulo es su propia isla MVC más tratos, complementos, interfaces y configuraciones.
- El Registro descubre automáticamente las configuraciones
*.inidentro de cada carpetasettings/del módulo.
Migraciones
Sección titulada «Migraciones»application/settings/config/database/<NNN>-<slug>.sql- Numeradas. Ejecutar mediante
./nibiru -mi <env>. - Un archivo por cambio lógico — no agrupar.
Vendor de Composer en core/l/
Sección titulada «Vendor de Composer en core/l/»Esta es una decisión intencional. composer.json establece vendor-dir: core/l. El cargador automático del marco espera que esté ahí. No lo muevas.
templates_c/ y cache/
Sección titulada «templates_c/ y cache/»Smarty debe poder escribir en templates_c/. El caché está habilitado opcionalmente a través de la clave INI [ENGINE] caching = true. Ambas carpetas deben estar en su archivo .gitignore.