- BIBIKES
- Pre-requisitos
- Descripción Técnica
- Metodología
- Pruebas
- Clockify
- Mejoras
- Dificultades
- Información extra
BIBIKES nace de un problema grave ubicado en las Islas Baleares: hay demasiada contaminación por exceso de vehículos. Para ello, se ha desarrollado una plataforma de alquiler de bicis la cual permite alquilar de una forma sencilla y con un diseño simple pero llamativo.
Para poder crear esta plataforma, hemos utilizado un servicio de MongoDB llamado MongoAtlas Además, hemos utilizado un lenguaje de programación que la gran mayoría conocemos, PYTHON con la version 3.10.7. Por ultimo, hemos usado el servicio ofrecido por GitHub conocido como GitHub Pages, que nos permite poder visualizar nuestro sitio web
REQUISITOS Tu tutor/a de empresa quiere:
- Desarrolla una aplicación Python para extraer los datos de MongoAtlas. Se hace necesario diseñar una especificación del esquema de los documentos JSON.
- Esos documentos JSON tendrás que transformarlos, también con una aplicación Python, en ficheros HTML (los estilos CSS corren también por tu cuenta).
- Luego, has de situar estos ficheros en una estructura de directorios que establece el generador de sitios estáticos de GitHub Pages, también mediante una aplicación Python que construyas.
- Cuando subas este código a tu repo en github, GitHub Pages servirá las páginas HTML a modo de sitio web estático.
- Tendrás que customizar los estilos CSS para dar la presentación adecuada a los datos.
- Desarrolla una API de MongoAtlas que permita hacer un CRUD.
- Python3
- pip3
- Git
- Requests
- pytest
Se recomienda el uso de un entorno virtual (venv) que permita tener instaladas las dependencias utilizadas en el proyecto.
Para BIBIKES, hemos decidido tener una gran funcion main.py el cual permita generar lo necesario para la creación de BIBIKES.
- Python
- OS Se trata de una libreria incorporada de Python que nos permite acceder a funciones dependientes del Sistema Operativo
- REQUEST Nos ayuda a trabajar con peticiones HTTP
- PYTEST Para realizar pruebas unitarias en un software con Python
- JSON Libreria para poder trabajar con documentos en formato JSON transformandolo en diccionario o lista de Python
- MONGODB
- MongoAtlas Se trata del servicio de Base de Datos en la Nube que nos permite crear y administrar una base de datos Mongo
- MongoDB API Herramienta que nos permite usar APIS para interactuar con MongoAtlas
- HTML5 y CSS3 Lenguajes que dan formato a las paginas webs
- Git Sistema para el control de versiones
- MarkDown Lenguaje de marcas ligero
- GitHub Pages Servicio que ofrece GitHub para alojar nuestros sitios estaticos desde un repositorio en GitHub
Nuestro diagrama de componentes se divide en:
-
Base de datos
- Create: Permite crear una nueva bici desde 0
- Read: Permite buscar alguna bici por su id
- Update: Nos permite modificar ciertos datos de una bici en concreto
- Delete: Nos permite borrar las bicis que queramos
- Conexion: Nos permite conectarnos a la Base de Datos y actualizarla
- Importar datos: Nos permite importar los datos
-
JSON (Ubicado en el main)
- Archivo JSON: Nos permite crear un archivo
- Transformar JSON: Nos permite transformarlo para trabajar en
-
HTML & CSS
- Index: Crea un indice
- Tipos: Crea varios archivos filtrando por tipos
- Marcas: Crea varios archivos filtrando por marcas
- Bici: Crea un archivo por cada bici que exista en la base de datos
-
Ver páginas: Nos permite cargar y visualizar las páginas creadas con HTML y CSS
La base de datos vinculada a BIBIKES recoge la siguiente información:
Para este proyecto, hemos optado por una metodología Ágil. Es decir:
- Hemos discutido y planificado nuestros objetivos
- Hemos empezado haciendo el diseño
- Hemos empezado a codificar y realizar pruebas
- Hemos implementado nuestro codigo para que empiece a iterar
- Tras ello, hemos comentado que podríamos mejorar y que errores podrían salir
Aunque sea una metodología que permite realizar los desarrollos en el menor de los tiempos, nos hemos encontrado con varios problemas tanto en el codigo como en el diseño de nuestras paginas webs.
Nuestras pruebas, que sobretodo estan ubicados en la carpeta test, se basan en confirmaciones tanto de rutas como de archivos. Nos hemos asegurado que cada archivo que se haya creado con Python. Aquí os mostramos un ejemplo
def test_comprobarRutaArchivoJSON():
assert os.path.exists(rutaJSON) != False
Además, estan configurados de tal forma que usando pytest recoge todos los casos test que se encuentran en el codigo, y detecta si algun archivo importante, como index.html o Bicis.json tiene su ruta correspondiente y, además, confirmar que es un archivo con contenido
Para computar el tiempo dedicado, hemos dividido el tiempo dedicado a las distintas asignaturas con las que hemos trabajado con sus colores en concretos. El tiempo utilizado al aprendizaje de nuevas posibilidades para implementar a nuestro codigo y de entendimiento sobre, por ejemplo, el uso de GitHub Pages no han sido computados. Además, las asignaturas han sido divididas en proyectos, para más facilitación de entendimiento y uso de la aplicación
Actualmente, tenemos bastantes mejoras en mente que implementar, como por ejemplo:
- Un mejor sistema de navegación entre páginas, ya que se puede hacer tedioso la navegación de la misma
- Una mejor recogida de datos, ya sea con librerias externas como puede ser Pymongo u otros
- Una implementación que permita encontrar que rutas existen y que no para automatizar la creación y eliminación de archivos HTML y así no tener páginas con bicicletas no existentes
Una de las mayores dificultades que hemos tenido a la hora de trabajar es el poco conocimiento que teniamos sobre el uso de GitHub Page, sobre las ramas, sobre los comandos... Eso nos hizo perder mucho más tiempo, ya que debíamos aprender sin computar, ya que, a vistas de la empresa, no es facturable.