Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📝 To-Do API REST - FastAPI, SQLModel & Docker

Python FastAPI SQLModel Pytest Docker

API RESTful modular para la gestión de tareas (To-Do), desarrollada aplicando buenas prácticas de ingeniería de software, arquitectura en capas, validación de datos, suite de pruebas automatizadas y empaquetamiento ligero con Docker.


🚀 Características Principales

  • CRUD Completo: Creación, lectura, filtrado, actualización y eliminación de tareas.
  • Respuestas Estándar HTTP: Manejo estricto de estados HTTP (incluyendo 204 NO CONTENT para eliminación exitosa y 404 NOT FOUND para recursos inexistentes).
  • Validación de Datos: Uso de schemas estrictos mediante Pydantic y SQLModel.
  • Arquitectura Modular: Separación clara entre capa API (Routers & Endpoints), Capa CRUD, Modelos y Schemas.
  • Testing Automatizado: Suite de pruebas de integración con pytest y TestClient.
  • Aislamiento en RAM: Fixtures con SQLite en memoria (sqlite:///:memory:) en conftest.py para asegurar tests independientes, rápidos y sin efectos secundarios en la BD real.
  • 94% de Cobertura de Código: Cobertura verificada del 100% en capas de negocio, endpoints y CRUD mediante pytest-cov.
  • Contenedor Ultra Ligero: Despliegue en Docker usando python:3.12-alpine (~53 MB RAM en idle).

🛠️ Tecnologías Utilizadas

  • Lenguaje: Python 3.12
  • Framework Web: FastAPI
  • ORM / Validaciones: SQLModel & Pydantic
  • Base de Datos: SQLite (Desarrollo) / In-Memory SQLite (Testing)
  • Testing: Pytest, TestClient, Pytest-Cov
  • Contenedorización: Docker, Docker Compose (Alpine Linux)

📂 Estructura del Proyecto

backend/
├── app/
│   ├── api/                 # Capa de presentación / entrada HTTP
│   │   ├── deps.py          # Inyección de dependencias (get_db)
│   │   └── v1/
│   │       ├── router.py    # Concentrador global de rutas V1
│   │       └── endpoints/
│   │           └── tareas.py# Endpoints del módulo de tareas
│   ├── crud/                # Lógica de acceso a datos / Queries DB
│   │   └── crud_tarea.py
│   ├── models/              # Modelos de entidad para BD (SQLModel)
│   │   └── tarea.py
│   ├── schemas/             # DTOs / Esquemas de validaciones (Pydantic)
│   │   └── tarea.py
│   ├── database.py          # Configuración del motor y sesión DB
│   └── main.py              # Punto de entrada de la aplicación FastAPI
├── tests/                   # Pruebas automatizadas
│   ├── api/
│   │   └── test_tareas.py   # Pruebas de integración de endpoints
│   └── conftest.py          # Fixtures globales de Pytest (BD en RAM)
├── .gitignore
├── Dockerfile
├── docker-compose.yml
├── README.md
└── requirements.txt

⚡ Instalación y Ejecución con Docker (Recomendado)

Si tienes Docker y Docker Compose instalados, puedes levantar todo el servicio en un solo comando:

docker compose up --build

Accede a la documentación interactiva Swagger en:
👉 http://localhost:8000/docs


🔧 Instalación y Ejecución Local (Sin Docker)

  1. Clonar el repositorio:

    git clone [https://github.com/tu-usuario/todo-fastapi-backend.git](https://github.com/tu-usuario/todo-fastapi-backend.git)
    cd todo-fastapi-backend
  2. Crear y activar entorno virtual:

    python -m venv venv
    # En Windows:
    venv\Scripts\activate
    # En Linux/Mac:
    source venv/bin/activate
  3. Instalar dependencias:

    pip install -r requirements.txt
  4. Ejecutar el servidor de desarrollo:

    fastapi dev app/main.py

    Accede a la documentación en http://127.0.0.1:8000/docs.


🧪 Ejecución de Pruebas

Para ejecutar la suite de pruebas automatizadas:

pytest -v -W ignore

Para generar el reporte de cobertura de código (pytest-cov):

pytest --cov=app --cov-report=term-missing -W ignore

Para ejecutar los tests dentro del contenedor Docker:

docker exec -it todo_fastapi_app pytest -v -W ignore

About

API RESTful contenerizada para la gestion de tareas basada en FastAPI y Python 3.12 con Clean Architecture, SQLModel y pytest.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages