3.1. Tecnologías Empleadas - diezMalena/api_FCTFiller GitHub Wiki

Tecnologías cliente

A continuación se nombrarán las tecnologías empleadas en la parte del cliente para el desarrollo de la aplicación.

Angular

Para el desarrollo en la parte de cliente ha sido utilizado el framework de Angular. Esto ha permitido el desarrollo de una SPA (Single Page Application) que nos permite la reutilización de componentes y la comunicación asíncrona con el servidor, lo que agiliza considerablemente la carga del contenido, pues solo carga los componentes necesarios utilizando lazy-loading.

Versión empleada: 13.0.3.

Librerías utilizadas

Bootstrap

Para la maquetación y estructura de la aplicación web ha sido empleado la biblioteca Bootstrap, esta permite la aplicación de estilos y de una maquetación limpia y estructurada de un modo sencillo. Esta permite la aplicación de estilos predefinidos para ciertos componentes de la aplicación permitiendo un gran ahorro de tiempo y obteniendo unos resultados óptimos.

Para el empleo de Bootstrap se utiliza la librería ng-bootstrap en su versión 12.0.0.

ngx-charts

Para la gestión y la muestra de gráficas se emplea ngx-charts en su versión 20.1.0.

Data-Tables

Para la muestra de tablas se ha utilizado la librería Data-Tables en su versión 13.0.1.

Signaturepad

Para la muestra de tablas se ha utilizado la librería angular2-signaturepad en su versión 4.0.2.

File-saver

Para la subida de ficheros de gran volumen de datos se ha emplea la librería File-saver en su versión 2.0.5.

ngx-dropzone

Para la subida de ficheros con sistema drag&drop se ha utiliza la librería ngx-dropzone en su versión 3.0.0.

ngx-toastr

Para la notificación con mensajes en pantalla se emplea la librería ngx-toastr en su versión 14.2.1.

popper.js

Para la notificación con mensajes en pantalla se emplea la librería popper.js en su versión 1.16.1.

Tecnologías servidor

Laravel

Para el desarrollo en del código del lado del servidor ha sido empleado el framework de Laravel. Este framework nos ayuda mediante su sistema de paquetes facilitando el trabajo del desarrollo con su MVC (Modelo Vista Controlador).

Versión empleada: 8.83.5.

PHP

El lenguaje empleado del lado de servidor ha sido PHP, en su versión 7_4_28.

Base de Datos

Para el almacenamiento de datos y la realización de consultas empleamos el gestor de base de datos MySQL en su versión [8.0.29-0ubuntu0.22.04.2].

Librerías utilizadas

DomPDF

DomPDF es empleado para la descarga de ficheros pdf mediante su generación a través de vistas en su versión 1.0.

Laravel-Cors

El paquete laravel-cors permite enviar encabezados de uso compartido de recursos de origen cruzado con la configuración de middleware de Laravel. La versión empleada ha sido la 2.2.0.

Guzzle

Como cliente HTTP se emplea la librería Guzzle en su versión 7.0.1.

JWT

Para la autenticación por token se emplea la librería JWT en su versión 4.0.

PhpSpreadsheet

PhpSpreadsheet es una biblioteca escrita en PHP puro y ofrece un conjunto de clases que le permiten leer y escribir varios formatos de archivo como .docx. Se ha empleado la versión 1.23.

PHPWord

PHPWord es una biblioteca escrita en PHP puro que proporciona un conjunto de clases para escribir y leer desde diferentes formatos de archivos de documentos. Se ha empleado en su versión 0.18.2.

Otras tecnologías empleadas:

SCRUM - Taiga

Para la realización del trabajo se ha seguido una metodología Scrum, se trata de un marco de trabajo para el desarrollo ágil, en este caso de software, porque es una metodología empleada en otras industrias. Esta metodología busca la aplicación de una serie de buenas prácticas para el trabajo colaborativo en equipo. Estas serían:

  • Adoptar una estrategia de desarrollo incremental en lugar de una planificación y ejecución completa.
  • Basar la calidad del resultado más en conocimiento tácito de las personas en equipos auto organizados, que en la calidad de los procesos empleados.
  • Solapar las diferentes fases del desarrollo, en lugar de realizar una tras otra en un ciclo secuencial o en cascada.

Para ello se asignan roles a los diferentes actores del proyecto.

  • Product Owner (o Propietario/a del producto)
  • Scrum Master (o Facilitador/a)
  • Desarrollador/es.

El flujo de trabajo se agiliza y gestiona de un modo más eficaz gracias a los Sprint (periodos asignados para la realización de tareas), los Scrum Diarios o Daily Standup en los que se todo el equipo comenta los posibles problemas y su planificación, las Revisiones del Sprint y las Retorspectivas.

Para la gestión de esta metodología de trabajo ha sido empleada la herramienta Taiga, un software libre y de código abierto, creado para gestionar y colaborar en proyectos ágiles.

Otra herramienta de utilidad ha sido Trello, una herramienta flexible para la gestión del trabajo, con la que los equipos pueden diseñar planes, colaborar en proyectos, organizar flujos de trabajo y hacer un seguimiento del progreso de una manera visual y productiva.

Balsamiq

Se trata de una herramienta para la creación de Wireframes de una forma muy sencilla y amigable. Se ha empleado para agilizar y favorecer la planificación de las diferentes partes del proyecto con respecto a su visualización. Los wireframes Balsamiq disponibles pueden verse en el apartado wireframes de esta wiki.

La versión empleada ha sido la 4.5.3.

Git & GitHub

Lo primero y más importante es diferenciar entre Git y GitHub,

  • Git es una herramienta de código abierto que los desarrolladores instalan localmente para gestionar el código fuente.
  • GitHub es un servicio en línea al que los desarrolladores que utilizan Git pueden conectarse y cargar o descargar recursos.

La versión de Git empleada ha sido la 2.35.1. En el caso de GitHub se ha utilizado la plataforma online existente.

Apache

El servidor HTTP Apache es un servidor web HTTP de código abierto, para plataformas Unix, Microsoft Windows, Macintosh y otras, que implementa el protocolo HTTP/1.1 y la noción de sitio virtual según la normativa RFC 2616. La versión empleada ha sido la 2.4.52 (Ubuntu).