Presentación de la defensa del proyecto titulado
**"Aplicación web de gestión de rutas turísticas mediante Node.js y API REST"** dentro de los estudios del Ciclo Superior de Desarrollo de Aplicaciones Webs realizados en el IES Trassierra (Córdoba). Enero del 2020
Presentación proyecto "Aplicación web de gestión de rutas turísticas mediante Node.js y API REST"
1. Proyecto
“Aplicación web de gestión de rutas
turísticas mediante Node.js y API REST”
Patricio J. Soriano Castro
Ciclo Superior Desarrollo de Aplicaciones Web
IES Trassierra
Enero 2020
2. Justificación
Diseño de una aplicación
web dinámica de gestión
de datos relativos a rutas
temáticas urbanas y sus
puntos de interés.
3. Objetivos Formativos
1. Programar y desplegar un servidor web basado en JavaScript con
Node.js.
2. Diseño de una API REST para la gestión y consumo de datos.
3. Trabajo con bases de datos no relacionales (NoSQL).
4. Manejo y creación de entidades geográficas mediante librerías
JavaScript.
4. Metodología
Metodología Agile y Scrum como marco de desarrollo (adaptada)
● Sprints cada 15 días coincidiendo con las reuniones tenidas con los
profesores responsables de proyecto en el Centro.
● Cada reunión ha sido considerada Sprint Review en la que se presente los
avances en el desarrollo y presentando un incremento de valor del producto.
● Pila de tareas a desarrollar o backlog con la elección de tareas para cada
Sprint.
6. Control de versiones
Uso de Git como software de control de
versiones.
● Creación de ramas master y dev
● Más de 190 commits
● Uso para despliegue a producción (push)
10. Implementación. Servidor
Node.js es un entorno de desarrollo del
lado del servidor open source y
multiplataforma escrito en JavaScript.
Concebido como un entorno de ejecución
de JavaScript orientado a eventos
asíncronos.
11. Implementación. Servidor
Configuración server.js
● Variables de configuración
● Librerías (10) con require()
● Carpetas de datos
estáticos.
● Motor de vistas.
● Conexión a la base de datos
● Archivo de rutas
13. Implementación. API Rest
Express.js
● Manejo específico de diferentes
verbos HTTP
● Gestión separada de las
peticiones por medio URL
(routes)
● Servicio de ficheros estáticos
● Configuración de plantillas
14. Implementación. Capa de datos
● MongoDB Almacén de documentos
(JSON)
● Mongoose (ODM)
○ Definición de esquemas
○ Tipado (SchemaTypes) de
atributos, atributos virtuales
○ Métodos de validación, indexado
○ Expresiones regulares
○ Funciones Get/Set
16. Implementación. Objetos geográficos
Leaflet es una biblioteca de JavaScript para
mapas interactivos basados en el navegador
y optimizados para dispositivos móviles.
● Mapas base (WMS y Tiles de mapas).
● Representación geográfica de datos de
API en formato GeoJSON.
● Complemento de edición gráfica (Leaflet
Draw).
● Geolocalización y callejero.
17. Frontend
Diseño de vistas con mediante el sistema de
plantillas Handlebars
● Generación de bloques de código HTML y uso
de datos JSON suministrador por los
controladores.
● Uso de la librería Axios para realizar las
peticiones HTTP a la API.
● Presentación de tablas con Bootstrap Tables
19. Autenticación
Sistema de autenticación basado en
Token y sesiones a partir del username
y la password.
● Generación tras la autenticación.
● Protección de rutas mediante
middleware.
● Uso para gestión de permisos por
roles.
● Encriptación de contraseña.
20. Pruebas y testeo
Pruebas de servicios API REST con Postman
● Colección de endpoints de la API.
● Uso de variables de entorno/desarrollo
● Opción de documentación externa en
web
Diseño de pruebas de humo (smoke testing)
con las funcionalidades básicas (longin, alta
ruta, edición POI, cambio contraseña..)
21. Despliegue a producción
● Heroku como servicio en la nube
(PaaS) que permite desplegar
aplicaciones.
● MongoDB Atlas base de datos
NoSQL en la nube gratuita
● Configuración producción
mediante variables de entorno.
22. Conclusiones (I)
● Node.js Curva de aprendizaje rápida, pero asciende a medida que la
aplicación se hace más compleja . A tener en cuenta los aspectos
relativos al despliegue.
● Puesta en marcha de la API REST con Express.js muy rápida y
flexible.
● Base de datos NoSQL requiere un esfuerzo por el cambio de
paradigma respecto a las bases de datos relacionales.
23. Conclusiones (II)
● Tratamiento de datos geográficos con librerías Javascript muy
potente
● Frontend mejorable con el uso de algunos de los framework JS
existentes (Angular, React o Vue).
● Imprescindible la aplicación de un sistema de test durante todas la
fases del proyecto (ej. Diseño Orientado a Pruebas TDD).
24. Proyecto
“Aplicación web de gestión de rutas
turísticas mediante Node.js y API REST”
Patricio J. Soriano Castro
Ciclo Superior Desarrollo de Aplicaciones Web
IES Trassierra
Enero 2020