Repositorio para la asignatura "Sistemas Software Basados en Web" del Máster en Ingeniería Informática de la UGR.
Realizado por José Alberto Gómez García durante el curso 2022/2023.
Repositorio para la asignatura "Sistemas Software Basados en Web" del Máster en Ingeniería Informática de la UGR.
License: GNU Affero General Public License v3.0
En el marco de la tarea 0, montaremos el entorno de desarrollo que utilizaremos para el proyecto de la asignatura. En particular:
Añadir un modelo de Mongoengine para representar los libros. Crear los templates básicos (base y buscador), añadir el método para realizar las búsquedas en sí mismas.
En esta tarea aparentemente vamos a realizar una pequeña introducción a REACT. Por lo visto, es un tanto de entrenamiento y toma de contacto, y aún no se va a desarrollar la UI/UX propia de la aplicación de la librería.
Creación de una API RESTFUL haciendo uso del plugin de Django que facilita esta tarea y el modelo basado en clases en lugar de funciones.
Sin mucha más explicación, vamos a seguir el tutorial Next.js Tutorial for Beginners | Next.js 13. Se supone que los tres primeros vídeos solamente.
Se debe habilitar el modulo de autenticación de Django para permitir el registro de usuarios y que estos hagan login en la aplicación. En issues posteriores estableceremos limitaciones sobre estos.
En el marco de la tarea 1, incluiremos una base de datos no relacional (MongoDB) como contenedor Docker en el clúster y la rellenaremos con algunos datos de prueba haciendo uso de mongoengine. Opcionalmente, haremos un script con las utilidades de backup y restore de la base de datos.
Crear un método de login propio para poder impedir que un usuario logueado se vuelva a loguear, al estilo de lo que hacía con el registro.
Poner un control para un modo oscuro, el cómo hacerlo ya es un tanto por nuestra cuenta, podríamos hacerlo con puro CSS o vía JS. Aparentemente hay una versión de Bootstrap nocturna y sería conveniente chequear como funciona y alternarla con la versión clara.
Limitar el acceso a métodos que puedan modificar la base de datos solo para aquellos usuarios que sean staff.
A partir de la tabla de resultados, poner en ella un botón para ver los detalles de un libro.
En esa página deberá haber opción de modificación y edición (esta última con un modal)
Presumiblemente en la página de la tabla de resultados, habrá que poner un botón para añadir entradas.
(Aún no hay página dedicada para el buscador)
Hacer uso del logger de la tarea anterior y de las signals de Django para loguear cuando un usuario inicia sesión, la cierra o se registra.
Se pretende que la barra de búsqueda no sea un formulario al uso que fuerza a un reenvío completo de la página por parte del servidor. Haciendo uso de JS, cada vez que se escriba en la barra de búsqueda se actualizará el contenido de la búsqueda (pidiéndolo al servidor).
En el contexto de páginas como la de añadir o editar libros no se ha dicho nada, así que dejaré el formulario como en las anteriores prácticas para dicha casuística.
Realizar la creación de la aplicación de la librería, la configuración básica de los ajustes dentro del proyecto y la creación de una página web para el buscador de libros.
Incorporar un sistema de logging al usuario, de manera que tengamos un registro de lo que sucede en la aplicación. (Búsquedas realizadas, intentos de inserción, modificación y eliminación, etc). Parte de este se podrá ver reflejado en un fichero, y todo en consola.
Hacer script con las utilidades de backup y restore de la base de datos. Estaría bien parametrizarlo para que el usuario pueda indicar el nombre del fichero donde desea guardar y desde el que desea recuperar.
También hay que solucionar el problema de que no puede restaurar el _id autogenerado de mongodb original, puede que no sea muy problemático, así que no me preocupa mucho.
En esta tarea pondremos en producción el proyecto desarrollado. Concretamente, modificaremos la configuración de Django y expondremos la mini-aplicación de la tarea 7.
Parece ser que algo de la configuración es incorrecto, porque no me parece pillar los ficheros que están en la carpeta static global. Investigar más y arreglar de cara a futuras entregas.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.