FastAPI Task Manager Backend Development by Migbert YanezFastAPI Task Manager Backend Development by Migbert Yanez

FastAPI Task Manager Backend Development

Migbert Yanez

Migbert Yanez

📝 FastAPI Task Manager

Un backend moderno y robusto para la gestión de tareas, construido con FastAPI, Python 3.11+, SQLAlchemy y PostgreSQL.
Autor: Migbert Yanez GitHub: https://github.com/migbertweb Licencia: GPL-3.0

🚀 Características

Gestión de Tareas (CRUD): Crear, leer, actualizar y eliminar tareas.
Autenticación Segura (JWT): Login de usuarios y protección de rutas.
Rate Limiting: Protección contra abuso de API (usando slowapi).
Logging: Registro detallado de peticiones.
Base de Datos Asíncrona: SQLAlchemy + AsyncPG para alto rendimiento.
Dockerizado: Incluye Dockerfile multistage optimizado.
Validación de Datos: Schemas fuertes con Pydantic.

🛠️ Tecnologías

Python 3.11
FastAPI
PostgreSQL
Docker
SQLAlchemy (Async)
Pydantic
JWT (JSON Web Tokens)
Bases de datos soportadas (Driver requerido):
PostgreSQL (asyncpg - Default)
SQLite (aiosqlite)
MariaDB/MySQL (aiomysql)

🔄 Cambiar Base de Datos

El proyecto está configurado por defecto para usar PostgreSQL. Si deseas cambiar a SQLite o MariaDB, sigue estos pasos:

Para usar SQLite

Agrega el driver en requirements.txt:

Modifica la variable DATABASE_URL en tu archivo .env o en app/database.py:

Nota: Para SQLite el archivo de base de datos se creará en el directorio local.

Para usar MariaDB / MySQL

Agrega el driver en requirements.txt:

Modifica la variable DATABASE_URL en tu archivo .env o en app/database.py:

📦 Instalación y Ejecución

Opción 1: Usando Docker (Recomendado)

Construir la imagen:

Ejecutar el contenedor:

Opción 2: Ejecución Local

Clonar el repositorio:

Crear entorno virtual:

Instalar dependencias:

Variables de Entorno: Crea un archivo .env en la raíz (para local) o configúralas en tu plataforma de despliegue (Dokploy/Railway).
Variable Descripción Valor por defecto / Ejemplo Requerido DATABASE_URL String de conexión a PostgreSQL postgresql+asyncpg://user:pass@host/db ✅ Sí SECRET_KEY Llave para firmar tokens JWT generar_con_openssl_rand_hex_32 ✅ Sí ALGORITHM Algoritmo de encriptación JWT HS256 ❌ No ACCESS_TOKEN_EXPIRE_MINUTES Duración del token en minutos 30 ❌ No
Iniciar el servidor:

Opción 3: Despliegue en Dokploy

Crear Proyecto: En tu panel de Dokploy, crea un nuevo proyecto.
Crear Servicio: Selecciona "Application" y elige GitHub como fuente.
Seleccionar Repositorio: Elige el repositorio fastapi-tasks.
Configuración de Build:
Build Type: Dockerfile (Dokploy detectará automáticamente el Dockerfile) o Nixpacks (gracias al railpack.json).
Se recomienda usar Dockerfile para este proyecto ya que está optimizado multi-etapa.
Variables de Entorno:
En la pestaña "Environment", añade DATABASE_URL y cualquier otra variable necesaria (ej. SECRET_KEY).
Desplegar: Haz clic en "Deploy". Dokploy construirá la imagen y lanzará el contenedor.

🔑 Uso de la API

La documentación interactiva está disponible en: http://localhost:8000/docs

Flujo de Autenticación

Registro: POST /users/
Crea un nuevo usuario.
Login: POST /token
Envía username (email) y password.
Recibe un access_token.
Usar Token:
Envía el token en el header Authorization: Bearer <tu_token> para acceder a las rutas de tareas /tasks/.

📄 Estructura del Proyecto


📜 Licencia

Este proyecto está bajo la Licencia GPL-3.0. Consulta el archivo LICENSE para más detalles.
Like this project

Posted Jul 19, 2026

Built a task management backend with FastAPI and PostgreSQL.