API para captura de leads.
- Python: 3.14-trixie
- Framework: FastAPI
- Base de Datos: PostgreSQL 18
- ORM: SQLAlchemy (async)
- Migraciones: Alembic
- Contenedores: Docker + Docker Compose
| Método | Endpoint | Descripción |
|---|---|---|
GET |
/api/v1/ |
Root - Mensaje de bienvenida |
POST |
/api/v1/leads |
Crear nuevo lead |
GET |
/api/v1/leads/{id} |
Obtener lead por ID |
PATCH |
/api/v1/leads/{id} |
Actualizar lead existente |
DELETE |
/api/v1/leads/{id} |
Eliminar lead |
GET |
/api/v1/leads |
Listar leads con paginación |
GET |
/api/v1/leads/stats |
Estadísticas de leads |
GET |
/api/v1/health |
Health check |
| Parámetro | Tipo | Default | Descripción |
|---|---|---|---|
page |
int | 1 | Número de página |
limit |
int | 10 | Items por página (max: 100) |
source |
str | - | Filtrar por fuente |
start_date |
date | - | Filtrar desde fecha (YYYY-MM-DD) |
end_date |
date | - | Filtrar hasta fecha (YYYY-MM-DD) |
order_dir |
str | desc | Orden (asc/desc) |
docker-compose up -dLa API estará disponible a través de Nginx en: http://localhost:10000
Consultar .env para la configuración:
POSTGRES_USER=postgres
POSTGRES_PASSWORD=SUp3r-pass*DB
POSTGRES_DB=omc
POSTGRES_HOST=db
| Servicio | Puerto |
|---|---|
| API | 8010 |
| PostgreSQL | 5432 |
| Nginx | 10000 |
Este proyecto usa taskipy para automatizar tareas comunes.
| Comando | Descripción |
|---|---|
task test |
Ejecutar tests |
task lint |
Validar linter (ruff) |
task docker-up |
Iniciar servicios con Docker Compose |
task docker-down |
Detener servicios |
task migrate-create |
Crear nueva migración Alembic |
task migrate-upgrade |
Aplicar migraciones |
task migrate-downgrade |
Revertir última migración |
Este proyecto fue desarrollado aplicando Spec Driven Development (SDD) utilizando OpenCode, siguiendo las mejores prácticas de desarrollo moderno:
- Arquitectura: Clean Architecture con separación de responsabilidades
- Stack: Python 3.14, FastAPI, PostgreSQL 18, SQLAlchemy Async, Alembic
- Calidad: Tests unitarios e integración, Linting con Ruff, Type hints
- Infraestructura: Docker + Docker Compose con Nginx como reverse proxy
Esta implementación toma inspiración de experiencia previa en:
- Order Processing System - Arquitectura de microservicios con Python
- IAM Interview - Manejo de agentes, chatbots y LLM con modelos open source
Para completar los requerimientos del desafío, se pueden implementar las siguientes funcionalidades tomando referencia del proyecto IAM Interview:
- Integración con LLM para generar resúmenes de leads
- Manejo de agentes para automatización
- Chatbot para interacción con clientes