Se debe crear una aplicación con el proposito de dar mantenimiento a una sola tabla. Esa tabla debe contar con las siguientes caracteristicas.
| CAMPOS | ATRIBUTOS |
|---|---|
| id | INT() NOT NULL |
| name | VARCHAR(100) NOT NULL |
| lastname | VARCHAR(150) NOT NULL |
| VARCHAR(200) NOT NULL UNIQUE | |
| address | TEXT |
| reference_address | TEXT |
| phone_number | VARCHAR(20) |
| created_at | DATETIME |
| updated_at | DATETIME |
Campos de auditoría (created_at, updated_at)
Las apis (5) a crear deben cumplir con las opciones para dar mantenimiento a esta entidad(CRUD)
| Método | Endpoint | Descripción |
|---|---|---|
| GET | /contacts | Listar todos |
| GET | /contacts/{id} | Obtener uno |
| POST | /contacts | Crear |
| PUT | /contacts/{id} | Actualizar |
| DELETE | /contacts/{id} | Eliminar |
Bonus (no obligatorio pero suma puntos): Paginación: ?page=1&limit=10 Filtro por email: ?email=xxx
- Para los efectos de actualización y/o creación 3 campos son obligatorios(name, lastname, email).
- email debe tener formato válido
- No permitir correos duplicados
- Manejo correcto de errores HTTP: 400 (bad request), 404 (not found) y 409 (conflict email duplicado)
- Documentar las apis creadas. Sugerimos utilizar swagger.
- Crear un docker file que permita crear la imagen y ejecutar el proyecto.
El repositirio debe contar con:
- Descripción
- Alcances del desarrollo (nivel desarrollado)
- Indicaciones de como ejecutar la solución
En este desafío debes mostrar tu habilidades en el manejo de tecnologías como:
- Python >= 3.9
- Flask >= 2
- SqLite
- SQLAlchemy
- Dockerfile funcional
- README claro
- Swagger con Swagger o OpenAPI
app/ ├── main.py ├── models.py ├── routes.py ├── db.py ├── schemas.py └── config.py
Dockerfile requirements.txt README.md
No es obligatorio exactamente así, pero: Debe verse orden y criterio arquitectónico.
No obligatorios, pero suma mucho:
- Tests con pytest
- .env
- Healthcheck /health
- Manejo de migraciones
- Preparado para despliegue en Amazon Web Services (ej: configuración compatible con AWS ECS o AWS Fargate)