Desarrollando JuncoCMS, he llegado a un modelo arquitectónico simple que deseo poner en discusión. Antes, algunas consideraciones. No se trata sólo de generar páginas dinámicas, o de separar el modelo, del control o la vista. Sino de armonizar éstas y otras ideas, como ser, el desarrollo de extensiones independientes e intercambiables, o separar lo más posible el código según la tarea que ejecuta, entre otras.

De esta manera nos queda:

Recursos (servicios)

Esto es, lo que se puede consultar a través de una URL, y cuyo resultado es devuelto de manera dinámica, por ejemplo: páginas HTML, archivos JSON, feeds, etc.

 admin/

De acceso solo para los administradores del sitio.

 front/

De acceso público.

 my/

Administración del usuario registrado.

 

Núcleo

Acá se encuentra el código reutilizable, disponible a todas las extensiones. En teoría no debe ser modificado por el desarrollador, porque los cambios serán removidos en una futura actualización.

 cms/libraries/

Lenguaje del lado del servidor, esto es, solo php.

 cms/scripts/

Lenguajes del lado del cliente y recursos. Solo no-php, es decir: css, javascript, imágenes, tipografías, pre-procesadores de hojas de estilos, etc.

 cms/plugins/

Son funciones encargadas de modificar el flujo de salida. Por lo general, son utilizadas para que la salida de una extensión sea enriquecida por el aporte de otras extensiones.

 cms/views/

Son clases que generan dinámicamente una porción de html, como ser: un formulario, una lista o un paginador.

 

Media

Acá se guarda el contenido que va formando parte del sitio, como ser: las imágenes de los usuarios o la música o los documentos para descargar.

 

Storage

Acá se almacenan los datos que personalizan un sitio. Es decir, todo lo que es editable en el desarrollo.

 storage/cache/

Todos los tipos de caché posibles.

 storage/locale/

Todas las traducciones.

 storage/logs/

Todos los archivos de logs que las extensiones implementen.

 storage/settings/

Las configuraciones.

 storage/updates/

Temporal de los paquetes de actualizaciones.

 

 

Publicado originalmente en ArrollandoWeb el 5-oct-2017