Reto Final - API LFG (Looking For Groups)
Tabla de contenido
- 0. Documentación técnica
- 1. Descripción
- 2. Requisitos Funcionales
- 3. Objetivos
- 4. Stack Tecnológico
- 5. Cómo usar la aplicación
- 6. Licencia
- 7. Registro de cambios
- 8. Créditos
0. Documentación técnica
Toda la documentación técnica referente a los endpoints se encuentra en /docs.
1. Descripción
Dada la situación sanitaria, una empresa tecnológica a estado trabajando en remoto desde marzo de 2020. Esto ha implicado que nuestros compañeros hayan perdido el contacto humano que siempre se ha tenido, y es algo que la empresa desea cambiar.
La empresa quiere dar un impulso a la manera que tienen los trabajadores de relacionarse, permitiendo que contacten entre ellos creando grupos de interés.
Una primera fase de este proyecto es crear una aplicación web LFG, que permita que los empleados puedan contactar con otros compañeros para formar grupos para jugar a un videojuego, con el objetivo de poder compartir un rato de ocio afterwork.
2. Requisitos Funcionales
Los requisitos funcionales de la aplicación son los siguientes:
- RF - Los usuarios se tienen que poder registrar a la aplicación, estableciendo un usuario/contraseña.
- RF - Los usuarios tienen que autenticarse a la aplicación haciendo login.
- RF - Los usuarios tienen que poder crear Parties (grupos) por un determinado videojuego.
- RF - Los usuarios tienen que poder buscar Parties seleccionando un videojuego.
- RF - Los usuarios pueden entrar y salir de una Party.
- RF - Los usuarios tienen que poder enviar mensajes a la Party. Estos mensajes tienen que poder ser editados y borrados por su usuario creador.
- RF - Los mensajes que existan a una Party se tienen que visualizar como un chat común.
- RF - Los usuarios pueden introducir y modificar sus datos de perfil, por ejemplo, su usuario de Steam.
- RF - Los usuarios tienen que poder hacer logout de la aplicación web.
3. Objetivos
Realizar una API REST completa, con Django, que cumpla con los requisitos anteriormente planteados.
Que además proporcione y asegure:
- Registro de usuarios.
- Login de usuarios, auth + token.
- CRUD de los diferentes modelos.
- Excelente Readme (IMPORTANTE).
Y como preferidos:
- Buen naming en las variables.
- Aplicación de buenas prácticas.
4. Stack Tecnológico
Para el desarrollo de la API utilizaremos PostgreSQL con Django:
- PostgreSQL.
- Python (3.6 o superior).
- VirtualEnv propio.
- Django para la estructura de proyecto.
- Django Rest Framework encargado de la serialización de objetos JSON.
- JWT.
Como Sistema Control de Versiones se utilizará Git, hosteado en Github, haciendo uso de Git-Flow.
5. Cómo usar la aplicación
Configurar el entorno
Ejecutar los siguientes comandos
python -m pipenv install
python -m django lfg/manager.py makemigrations
python -m django lfg/manager.py migrate
Crear un fichero llamado lfg/conf.py
con el siguiente contenido:
username = 'postgres'
password = '1234'
host = 'localhost'
port = '5432'
Ejecutar la aplicación
python -m django lfg/manager.py runserver
Desde la web
El superusuario es:
- user: admin
- pass: 1234
Testeado contra fuerza bruta para que no se pueda acceder
Desde la API
Una vez iniciada la aplicación con ... runserver
http://localhost:8000/{entidad}
6. Licencia
El proyecto utiliza la licencia MIT, para más información, acceda al fichero LICENSE
7. Registro de cambios
Todos los cambios relevantes realizados al proyecto/repositorio quedarán registrados en el fichero CHANGELOG.md.
8. Créditos
- Proyecto ideado por Jose Marín como docente parte del equipo de Geekshubs
- A Geekshubs por el Bootcamp de Backend en Python
- A Valencia Digital Summit 2021, el evento que me hizo obtener una beca con la que poder acceder al Bootcamp