APIs asíncronas con FastAPI
Estructurar una API REST con routers, dependencias, autenticación JWT y documentación automática con Swagger.
Aplicación web que monitoriza servidores y servicios de red en tiempo real: comprueba URLs, puertos TCP y conexiones SSH, guarda el histórico y lanza alertas cuando algo cae.
Registras los servicios que quieres vigilar (una URL, un puerto TCP, un servidor SSH) y la aplicación los comprueba automáticamente cada pocos segundos. Si algo cae, avisa por Telegram. Toda la actividad queda en base de datos y se ve en un dashboard con gráficas de tiempo de respuesta e historial de incidencias.
Lo construyo porque cubre justo el stack que piden las ofertas de backend con Python: API REST, base de datos relacional, tareas en segundo plano, contenedores y CI/CD. A diferencia de un CRUD típico, tiene varios componentes que se comunican entre sí, que es lo que pasa en un sistema real.
Maqueta ilustrativa con datos ficticios.
Todo se levanta con docker compose up: un solo comando para los cinco servicios.
Usuario ──HTTPS──▶ Caddy (reverse proxy + SSL)
│
▼
FastAPI (API REST + dashboard Jinja2)
│ │
▼ ▼
PostgreSQL Redis (caché + broker)
▲
│
Worker (APScheduler)
│
┌───────────┼───────────┐
▼ ▼ ▼
HTTP check TCP check SSH check ──▶ Telegram (alertas)
API con FastAPI, autenticación JWT, CRUD de objetivos y un worker básico que ejecuta checks HTTP y guarda los resultados en PostgreSQL.
Checks TCP, SSH y ping. Alertas a Telegram. Dashboard con gráficas de Chart.js y refresco parcial con HTMX.
Dockerfiles multi-stage y docker-compose completo con healthchecks. Arranque con un solo comando en cualquier máquina.
En cada push: linting (ruff y black), tests con Postgres como service container y publicación de imágenes en ghcr.io.
VM ARM en Oracle Cloud Free Tier, Caddy como reverse proxy con SSL automático y la app accesible en una URL pública.
Despliegue automático con cada merge a main: push, tests, build y deploy, con aviso del resultado por Telegram.
Estructurar una API REST con routers, dependencias, autenticación JWT y documentación automática con Swagger.
SQLAlchemy 2.0 con su API async, modelado relacional y migraciones con Alembic sin romper producción.
Imágenes eficientes con multi-stage builds, redes entre contenedores y secretos con variables de entorno.
Pipelines que validan, construyen y despliegan, con service containers para levantar Postgres en los tests.
El repositorio será público cuando el MVP esté estable.