Arquitectura
Capítulo 1 La arquitectura
Objetivo de la herramientas
El objetivo del proyecto es contar con una herramienta que permita modelar sistemas en base a una base de datos relacional por el momento mysql o mariadb.
Y que de forma fácil tome la misma estructura para su comportamiento sumando un modelador simple sobre comportamiento y relación de datos.
La finalidad es que dicha herramienta permita generar aplicaciones en tiempo récord en base y que la adaptación cambios y ajustes de las aplicaciones sean de fácil creación y adaptación.
Tomando en consideración los frameworks existentes buscaremos la forma de adaptarlo a los frameworks actuales más importantes.
Capítulo 2: Sobre la arquitectura
Su base
El proyecto en su origen fue basado en la arquitectura de YII versión 1 y se tomo como base el modelo de arquitectura de entrada adaptándola de tal forma que no se requiriera la creación de rutas para la definición ya que esta esta definida por la propia arquitectura de controles y la estructura de datos se forma a partir de la relación de base de datos llaves foráneas, así como comentarios que se crean dentro de la base.
Capítulo 2: Sobre la arquitectura
La base del proyecto
El proyecto en su origen fue basado en la arquitectura de YII versión 1 y se tomo como base el modelo de arquitectura de entrada adaptándola de tal forma que no se requiriera la creación de rutas (router’s) para la definición ya que esta esta definida por la propia arquitectura de controles y la estructura de datos se forma a partir de la relación de base de datos llaves foráneas, así como comentarios que se crean dentro de la base.
También se creo una estructura que acompaña al sistema que ayuda a la definición y comportamientos de catálogos.
- Repositorio base
- Estructura de la arquitectura
El sistema esta basado en el modelo vista controlador por sus siglas en ingles (MVC – Model View Controler)
y se compone de un solo acceso al sistema index.php el cual tendrá todo el control de entradas al sistema esto lo controlamos a través de la la configuración del archivo .htaccess donde se configuro que todas las peticiones deberán de pasar por el index y las rutas deberán entrar como parámetro con también se pueden recibir parámetros por get los cuales se transforman en variables pero antes de todo eso se limpian las variables de posibles ataques XSS y SQLInjection
Sobre la estructura de carpetas tenemos design, docs, framework, includes, protected y sobre los archivos de raíz tenemos index.php, .htaccess y .gitignore
design En esta carpeta se guardan los estáticos de un templete y se pueden enumerar del 1 en adelante de esa forma el mismo sitio puede comportarse y tener apariencia diferente de forma simple
docs En esta carpeta se genera el API de la aplicación cuando se ejecuta phpDoc revisar https://www.phpdoc.org/
framework En esta carpeta viven los módulos básicos delos que se compone la aplicación y que se cargan por default ala aplicación y se tiende a no cambiar nada de esta sección salvo que se quiera modificar el framework.
Includes En esta carpeta viven todos los archivos ajax que queremos ejecutar por alguna razón y carpetas donde se guardan archivos como pdfs, imágenes o cualquier archivo que se quiera relacionar a registros, en esta carpeta vive una de las carpetas más importantes structure la cual contiene la estructura convertida dela base a objetos que definen la base de datos y a través de los cuales el sistema opera para todo su sistema de catalogos.
Protected En esta carpeta es donde más se deberá de trabajar yse compone de 4 carpetas:
config la cual contiene un archivo llamado data.php el cuales el principal archivo de configuración del sistema en donde se puede configurar el servidor de aplicaciones local, QA y producción para no tener que estar cambiando cada que se despliega a producción o a servidor de pruebas.
Controller En esta carpeta se guardan todos los controladores del sistema que son equivalentes a las rutas que deberán de existir habrá un controler por cada ruta existente en nuestro sistema.
Model En esta carpeta viven el administrador de modelos y trabaja en base a la estructura de la base por ello es que casi no se tendrá que crear modelos ya que se crean de forma dinámica a partir de la estructura de datos, solo en caso de modificar el framework para algo más avanzado se deberá modificar.
Views en esta carpeta viven los templetes que se usaran para el sistema y viven dentro de la carpeta tempates y luego el número de diseño para ligarlo al número que coincida con el de la carpeta design
- Capítulo 3: Sobre la instalación
- Requerimientos
El sistema esta creado en el lenguaje de PHP por tanto puede ser ejecutado en un servidor de aplicaciones Apache o Nginx basta con 1 GB de memoria y 10 GB de DD y procesador de 2GHz es más que suficiente para operar y claro el rendimiento va a depender de la cantidad de gente que se conecte.
Por otro lado tenemos la base de datos que puede ser Maria DB o Mysql actualmente esta es la base de datos con la que opera el sistema.
- Pasos para desplegar el sistema
Paso 1
Después de haber clonado el proyecto o tenerlo en una carpeta ejemplo var/www/miproyecto/ entonces se deberá de crear la base de datos quese usara, ya que de ello depende que el sistema sepa que hacer existen tres tablas que son básicas para el funcionamiento del sistema user, rol y status estas tres tablas te permitiran tener un sistema de login para la aplicación por lo tanto serán requeridas adjunto script para la creación aparta de ello tenemos 4 tablas para configuración avanzada estas son conf_field, conf_table, conf_type_view, conf_view, las cuales permiten definir el comportamiento de cada entidad o tabla dentro del sistema.
La tabla de user tiene a los usuarios que pueden estar identificados en el sistema puedes crear un usuario de prueba o de acceso principal este usuario deberá tener el rol de administrador que es el ID 1 de la tabla e roles y su clave se guardara en MD5
Paso 2
se deberá configurar el archivo data.php que se encuentra en
/protected/config/data.php
en donde se escribiran nombre de la base de datos, usuario, y clave asi como las rutas donde vivirá el proyecto.
Paso 3
se deberá dar permisos de escritura a las carpetas
includes/images/
includes/files/
includes/pdfs/
includes/structure/
Paso 4
Crear la estructura de datos
http://localhost/not-framework-dixi/includes/ajax/createStructure.php
Esto suponiendo que estas en el local deberás ajustar la url si lo quieres ejecutar en un dominio externo
Este archivo genera diferentes archivos .json los cuales representan la base de datos y requeridos para el correcto funcionamiento del sistema.
Lo otro seria trabajar directamente sobre el módulo de modelado que se encuentra en:
https://admin.logistico.digital/modelos
Paso 5
Puedes descargar alguno de los diseños con los que ya viene la aplicación para operar
Listo!!! ya se tiene un proyecto listo para operar
- Capítulo 4: Primeros pasos
- Lo que ya trae el sistema
El sistema cuenta con servicios funcionales.
- Sistema de 5 plantillas ya creadas y operativas
- Sistema de login
- Modelado de catálogos
- Sistema de catálogos
Plantillas
Después de descargar una plantilla solo hay que colocarla en una carpeta con el número de diseño en la siguiente ruta: design/
ejemplo si descargo el diseño 2 entonces quedaría en design/3/
y el archivo data.php debería de cambiarse el diseño al 3 y es todo
Login
Cuando se entra al sistema el login ya funciona si la base cuenta con las tres tablas de user, status y rol con almenos un registro
Modelado del sistemas
Esta ruta sirve para definir cosas sobre el comportamiento del sistema como nombre de los campos y campos dependiendo la vista este modulo solo esta disponible para para la versión 1 del diseño
Sistema de catalogos
Para el sistema de catálogos solo deberá de usar el mismo nombre de la tabla en la siguiente ruta.
https://admin.logistico.digital/catalogo/<Nombre tabla>
Ejemplo: https://admin.logistico.digital/catalogo/rol
Lo que pasara a continuación es que tendremos un CRUD (Create, Read, Update, Delete) o un ABCE (Agregar, Borrar, Consultar y Editar ) de nuestra tabla
- Capítulo 5: Como crear nuevos módulos
- Sobre las rutas y controladores
Para crear módulos nuevos es muy fácil solo deberán de crearse un controlador con la siguientes especificaciones:
1. supongamos que quieres crear un módulo que se llame visitas y lo quieres crear por que no se parece a un catálogo simple, sino quieres crear un diseño especifico y quieres que la ruta sea
https://admin.logistico.digital/visitas
un controlador que deberá vivir en protected/controller/ControllerVisitas.php
y deberá de tener la siguiente estructura como mínimo

