PHP code generator to make complete systems / Generador de código PHP para hacer sistemas completos
Construya la imagen
$ cd ~/Documentos/Docker/GenesisPHP/
$ docker image build -t guivaloz/genesisphp:latest .
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
guivaloz/genesisphp latest bb9c2b665558 1 minutes ago 450 MB
EN CALIENTE: Corra e ingrese a la terminal, compruebe que exitan los directorios
$ docker container run -it --name genesisphp --rm guivaloz/genesisphp /bin/bash
# ls
Demostracion Eva Tierra
# exit
Para construir nuevas imágenes basándose en ésta, cree un Dockerfile para su "Sistema"...
FROM guivaloz/genesisphp
MAINTAINER Guillermo Valdes Lozano <guillermo@movimientolibre.com>
# Cambiarse al directorio genesisphp
WORKDIR /genesisphp
# Copiar el archivo de configuracion de Bash
COPY .bashrc .
# Modificar en la configuración de Apache el directorio /var/www
ENV SISTEMA_DIR /genesisphp/Sistema
RUN sed -ri -e 's!/var/www/!${SISTEMA_DIR}!g' /etc/apache2/apache2.conf
RUN sed -ri -e 's!/var/www/!${SISTEMA_DIR}!g' /etc/apache2/conf-available/*.conf
# Modificar en la configuración de Apache el directorio raíz
ENV APACHE_DOCUMENT_ROOT /genesisphp/Sistema/htdocs
RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
Comenzó con la común necesidad de ir estandarizando las librerías útiles para cualquier sistema web; en ese momento, elaborar cada módulo (altas, bajas, búsquedas, detalle, listados, etc.) para cada tabla de una base de datos nos ocupaba aproximadamente 4 horas de trabajo. Fue entonces, cuando en una charla de estacionamiento, llegó la visión de un patrón repetitivo que pudiera automatizarse. ¿Porqué no hacer un programa que haga programas con estas librerías? así comenzó allá por el 2012.
- Tierra: Son los "ladrillos" básicos para crear menajes, detalles, listados, la página, etc.
- Eva: Son los programas que crean los archivos ; entre los que destacan el inicio de sesión, bitácora, usuarios, etc.
- Adán: Las "semillas" son clases PHP que concentran todas las características de cada módulo a construir.
- Serpiente: Cuando una semilla necesita datos de otra semilla, recurre a Serpiente que comparte esta información.
- Demostración: Una prueba completa de GenesisPHP para un sistema de expedientes con fotos y domicilios.
- Poder elaborar grandes sistemas web con rapidez.
- Gran compatibilidad de dispositivos y navegadores, usando páginas responsivas de Twitter Bootstrap versión 3.
- Definir las características del sistema por medio de:
- Semillas las cuales son clases con las columnas de una tabla; describen sus tipos, validaciones, aparición en listados, orden, relaciones, etc.
- Y la Serpiente contiene los datos que las semillas comparten entre sí y estructura la jerarquía entre ellas.
- Las semillas son la base para crear módulos, donde un módulo es un conjunto de clases, cada una con una finalidad:
- Registro
- DetalleWeb
- FormularioWeb
- EliminarWeb
- RecuperarWeb
- Listado
- ListadoWeb
- BusquedaWeb
- OpcionesSelect
- PaginaWeb
- Estandarizar las librerías de uso común en Base2, a lo que llamo Tierra; todas las clases de todos los módulos recurren a estos programas que hacen funciones específicas:
- MensajeWeb
- DetalleWeb
- ListadoWebControlado
- BarraWeb
- ImagenWeb
- AcordeonesWeb
- LenguetasWeb
- PlantillaWeb
- PaginaWeb
- Ofrecer la administración de usuarios, parte de lo que hago llamar Eva:
- AdmUsuarios: los nombres, nombres cortos, contraseñas cifradas, tiempo de expriración, conteo y límite de sesiones.
- AdmSesiones: listado con los usuarios que están usando el sistema.
- AdmBitacora: registro de cada nuevo registro, modificación, búsqueda, etc. que haya hecho cada usuario.
- AdmAutentificaciones: registro de los intentos exitosos y fallidos al entrar, así como las direcciones IP de los clientes.
- AdmDepartamentos: Un departamento es un conjunto de personas, a su vez, cada departamento debe tener uno más Roles.
- AdmRoles: Un rol es un conjunto de permisos para cada módulo del sistema. Limita el uso desde ver hasta recuperar registros.
- AdmIntegrantes: Define los usuarios que pertenecen a cada departamento. Es posible que un usuario pertenezca a más de un departamento e incremente sus privilegios.
- Tener la capacidad de hackear el sistema resultante con programas propios.
- Ejecutar la destrucción y construcción del sistema web con:
- CrearBaseDatos.sh - Destruir la base de datos, crearla, ejecutar los archivos SQL que crean cada tabla y agregan los registros iniciales.
- Dios.sh - su nombre lo dice todo y ejecuta estos scripts en este orden:
- ProtegerArchivos.sh
- CrearComun.sh
- CrearGenesisPHP.php
- CrearSobreescribir.sh
- CrearExclusivos.sh
- RestaurarArchivos.sh
- IniciarNuevoSistema.sh debe estar en tu PATH y ayuda creando los directorios, enlaces y archivos por defecto para un hacer un nuevo sistema. Nota: por defecto espera que GenesisPHP se encuentre en $HOME/Documentos/GitHub/guivaloz/GenesisPHP
- PHP versión 5 o mayor.
- Base de datos PostgreSQL versión 9 o mayor.
- Apache servidor HTTP versión 2.
- GNU/Linux con Bash y Cron estándard.
- Crear archivos CSV (en construcción)
- Crear archivos PDF
- Crear archivos JSON
- Crear gráficas por medio de Google Charts
- Capacidad de mostrar mapas y registros georreferenciados con OpenStreetMap
- Capacidad de ejecutar Bash Scripts desde el navegador web.