diff --git a/docs/Project.org b/docs/Project.org new file mode 100644 index 0000000..3a40deb --- /dev/null +++ b/docs/Project.org @@ -0,0 +1,88 @@ +#+TITLE: MDIS +#+SUBTITLE: Programación Web +#+AUTHOR: Amin Kasrou Aouam +#+DATE: 2020-06-18 +#+PANDOC_OPTIONS: template:~/.pandoc/templates/eisvogel.latex +#+PANDOC_OPTIONS: listings:t +#+PANDOC_OPTIONS: toc:t +#+PANDOC_METADATA: lang=es +#+PANDOC_METADATA: titlepage:t +#+PANDOC_METADATA: listings-no-page-break:t +#+PANDOC_METADATA: toc-own-page:t +#+PANDOC_METADATA: table-use-row-colors:t +#+PANDOC_METADATA: logo:/home/coolneng/Photos/Logos/UGR.png +* MDIS + +MDIS es una sistema de información que permite la gestión de una consulta médica. + +** Funcionalidades + +- Gestión de Usuarios +- Gestión de Pacientes +- Gestión de Citas +- Gestión de Vacaciones +- Gestión de Informes + +** Tecnologías + +- PHP +- MySQL +- Javascript (Jquery) +- Nix + +** Arquitectura + +#+CAPTION: Arquitectura del sistema +[[./assets/F1.png]] + +Es un sistema web clásico, con la característica de que las consultas a la base de datos se realizan mediante /PDO/, para evitar vulnerabilidades del tipo /inyección de SQL/. + +Además de ésto, no hacemos ninguna consulta /SQL/ fuera del archivo database.php, lo que nos permite separar la lógica interna de la presentación. + +** Despliegue + +El desarrollo y despliegue del sistema se han hecho gracias a /Nix/, un gestor de paquetes que permite entornos de desarrollo y despliegue reproducibles. + +A continuación mostramos el código que defino el entorno: + +#+BEGIN_SRC nix +{ pkgs ? import { } }: + +with pkgs; + +mkShell { + # Definición de los paquetes + buildInputs = [ php74 php74Extensions.pdo_mysql mysql57 ]; + + # Comandos que se ejecutan al entrar en la nix-shell + shellHook = '' + pkill mysql + rm -rf .mysql && mkdir .mysql + + mysqld --datadir="$(pwd)/.mysql" --socket="$(pwd)/.mysql/mysql.sock" --initialize-insecure + mysqld --datadir="$(pwd)/.mysql" --socket="$(pwd)/.mysql/mysql.sock" --skip-networking & + sleep 1 + + mysql --socket="$(pwd)/.mysql/mysql.sock" -u root < $(pwd)/database/db.sql + + alias mysql='mysql --socket="$(pwd)/.mysql/mysql.sock" -u root' + + php -S localhost:8000 + ''; +} +#+END_SRC + +Como podemos ver, /Nix/ nos permite: + +- Instalar las dependencias necesarias, en el ámbito de una shell +- Ejecutar una base de datos temporal +- Inicializar la base de datos +- Lanzar el servidor web interno de PHP (se podría reemplazar por Apache/Nginx/...) + +El único comando que tenemos que ejecutar es: + +#+BEGIN_SRC shell +nix-shell +#+END_SRC + +Y ya dispondremos de un sistema funcional, y accesible en la URL *localhost:8000*. diff --git a/docs/Project.pdf b/docs/Project.pdf new file mode 100644 index 0000000..8f1a3b4 Binary files /dev/null and b/docs/Project.pdf differ diff --git a/docs/assets/F1.png b/docs/assets/F1.png new file mode 100644 index 0000000..177f135 Binary files /dev/null and b/docs/assets/F1.png differ