Del concepto a la idea FastAPI
El reto de hoy consiste en llevar una idea de la teoría a la práctica lo más rápido posible con los siguientes objetivos en mente Concepto: Identificar una problemática o necesidad . Idea : Encontrar la solución e implementarla mediante un prototipo , el cual debe ser desarrollado y desplegado. Concepto Cuando se inicia un sistema, siempre se necesitan catálogos básicos. Para no complicarnos demasiado, decidí enfocarme en uno de los más comunes: “Días inhábiles”. Aunque ya hay opciones en el mercado , usualmente se tiende a desarrollar de nuevo o agregar cada vez un desarrollo nuevo . Con una búsqueda rápida, encontramos la fuente oficial de fechas inhábiles: https://www.gob.mx/profedet/articulos/dias-de-descanso-obligatorio-2025 Idea Pensando en la funcionalidad mínima, se debe permitir: Consultar días inhábiles Agregar un día inhábil Desactivar un día inhábil En cuestión de la tecnología inicialmente consideré Flask, pero después de repasar algunos videos y recordar la importancia de la documentación automática y la rapidez de desarrollo, decidí experimentar con FastAPI. https://fastapi.tiangolo.com/ Con FastAPI crear el proyecto es relativamente sencillo gracias a la sección de Virtual Environments en la documentación oficial, la cual considero suficiente para configurar un proyecto de manera rápida y correcta. Ahora era el momento de crear el clásico “Hola Mundo”. La documentación de FastAPI hace esto muy sencillo: el apartado First Steps nos guía paso a paso para lograrlo. Una vez completados estos pasos, solo basta con ejecutar en la consola el siguiente comando: fastapi dev main.py Y en consola ya podremos ver el proyecto ejecutándose. Lo que más me gusta de FastAPI es que la documentación se genera automáticamente desde el primer momento, y está disponible en dos formatos: Swagger y ReDoc. Personalmente, encuentro que ReDoc ofrece una presentación más minimalista y clara, lo que facilita la lectura y navegación. El siguiente paso fue crear los servicios con datos simulados, y para esto aproveché la asistencia de una IA. Mi contexto fue el siguiente: “Estoy desarrollando una API con FastAPI para gestionar los días no laborables en México, y necesito los servicios REST básicos : Consultar días inhábiles Agregar un día inhábil Desactivar un día inhábil Los días no laborables: 1° de enero Primer lunes de febrero, en conmemoración del 5 de febrero Tercer lunes de marzo, en conmemoración del 21 de marzo 1° de mayo 16 de septiembre Tercer lunes de noviembre, en conmemoración del 20 de noviembre 1° de octubre cada seis años, cuando corresponde a la transmisión del Poder Ejecutivo Federal 25 de diciembre” Para este alcanzable, decidí manejar la información en memoria, lo que nos permite probar desde este punto. Con esto ya fue posible ver mis nuevos servicios en la documentación y realizar unas pruebas Creo que hasta el momento es aceptable. He decidí dividir este proyecto en pequeñas tareas: Dockerizar la aplicación : Si alguien desea extenderla o usarla , será más fácil. Persistencia de datos : Aún estoy evaluando si usar PostgreSQL o MongoDB. Nice to have : Integración continua . Por lo pronto, si te interesa explorar el código, puedo compartir el repositorio. Aún está en sus primeras etapas, pero me emociona contribuir poco a poco a nuestra comunidad y mostrar cómo una idea puede evolucionar con pequeñas iteraciones. https://github.com/juanrenatonoh/api-cat-financieros