Este proyecto tiene como objetivo desarrollar un sistema similar al de la Real Academia Española (RAE), pero con una temática diferente a elección del estudiante. A continuación, se detallan los requisitos y directrices para completar exitosamente el proyecto de examen final.
- Framework: Utiliza el framework de tu preferencia (por ejemplo, FastAPI, Flask, Django).
- Recomendación: Utiliza SQLite.
- Scripts de Creación: Incluye scripts para la creación de la base de datos.
- Estructura: Organiza el proyecto siguiendo la estructura de Manager y Routers vista en clase.
- Patrón de Diseño: Implementa el patrón UnitOfWork.
- Librerías: Utiliza Pydantic y SQLAlchemy para la organización de ficheros.
- Repositorio: Sube el proyecto a GitHub.
- README: Incluye un archivo README detallado que explique todo el proyecto.
- Tests Unitarios: Implementa pruebas unitarias.
- Tests de Integración: Implementa pruebas de integración.
- Conexión: Conecta el proyecto a un frontend sencillo. Puedes utilizar Telegram como se explicó en clase.
- Fuente de Datos: El proyecto debe consumir datos de una fuente externa, ya sea mediante web scraping de una página web o utilizando una API disponible (por ejemplo, APIs de fútbol con capas gratuitas).
- Ejemplos: Proporciona los endpoints listos para usar en un ejemplo mediante Postman.
- Readme: Explica tres problemas que hayas resuelto utilizando el depurador integrado de PyCharm.
- Capturas: Incluye capturas de pantalla que muestren cómo utilizaste el depurador.
- Relaciones: La base de datos debe tener al menos dos tablas relacionadas (por ejemplo, camisas y botones).
- Funciones: Usar Walrus Operator.
- Comprensión de listas: Usar comprensión de listas tal y como hemos visto en clase.
- Loguru: Usar loguru para imprimir por pantalla las partes importantes del proyecto.
Estos elementos no se han explicado directamente, pero pueden aportar valor adicional al proyecto y se necesitará un mínimo de 3 puntos opcionales para presentar el proyecto.
- Opciones: Utiliza un frontend diferente a Telegram, como un HTML sencillo que apunte a nuestro backend o Discord.
- Hosting: Despliega el proyecto en Vercel o cualquier otro servidor gratuito o de pago.
- Valor: Este punto cuenta por 3 puntos adicionales, ya que es muy valorado para oportunidades laborales.
- Implementación: Añade un sistema de autenticación al proyecto. Puedes utilizar Bearer Token como referencia.
- Opciones: Utiliza Firebase como base de datos o para añadir más funcionalidades.
- Valor: Este punto cuenta por 2 puntos adicionales.
- Documentacion: https://firebase.google.com/docs/reference/admin/python
- Relaciones: Amplía la base de datos para que tenga al menos cinco tablas relacionadas entre sí.
- Scripts: Crear un fichero .sh o .bat o un Makefile dependiendo del sistema que tengáis para desplegar o ejecutar algunos de vuestros scripts.
- Docker: Usar docker para vuestro proyecto.
- Valor: Este punto cuenta por 2 puntos adicionales.
- Avanzado: Usar debugger con un if condicional.
- Alembic: Hacer cambios en la base de datos y usar Alembic para las distintas versiones
- Valor: Este punto cuenta por 3 puntos adicionales.
- Sentry: Aplicar Sentry al proyecto.
- Velocidad: Aplicar alguna lirberia como pyinstrument al proyecto para ver que metodos usan mas tiempo en el proyecto.
- BBDD: Montar otra base de datos que no sea SQLlite, tal como MariaDB
- Valor: Este punto cuenta por 2 puntos adicionales.
Una vez finalizado el proyecto, se realizará una presentación (showcase) frente a los demás alumnos y el profesor. Durante la presentación, el profesor podrá hacer preguntas sobre el proyecto e incluso solicitar modificaciones en directo, preguntando cómo implementarían ciertas funcionalidades o cómo resolvieron determinados aspectos del proyecto.
- Documentación de FastAPI
- Documentación de Flask
- Documentación de Django
- Guía de SQLAlchemy
- Introducción a Pydantic
- Uso de Postman para probar APIs
Para cualquier duda o consulta, por favor contacta con el profesor o los asistentes del curso.
¡Buena suerte con tu proyecto!