Django Template API

Una plantilla robusta y escalable para iniciar proyectos de backend con Django REST Framework, aplicando principios de arquitectura limpia y buenas prácticas.

Backend Python Python Bash Bash Ver en GitHub
Django Template API

Stack

Django Celery Redis

🚀 Características

  • Arquitectura Limpia: Separación de las aplicaciones, con lógica de negocio encapsulada en servicios (services/).
  • Autenticación JWT: Configurado con rest_framework_simplejwt.
  • Tareas Asíncronas: Integración lista con Celery y Redis para tareas en segundo plano (backend y broker).
  • WebSockets: Soporte implementado con Django Channels para comunicación en tiempo real.
  • Documentación Interactiva: Autogeneración de documentación OpenAPI con drf-spectacular (Swagger UI y ReDoc).
  • Dockerizado: Configuración completa con docker-compose (App, Celery Worker, Celery Beat, Redis).
  • Scripts de Utilidad: Incluye create_app.ps1 y un custom command para generar la estructura limpia de nuevas apps automáticamente.

🛠️ Stack Tecnológico

  • Lenguaje: Python 3.x
  • Framework Principal: Django 5.1.x
  • API Framework: Django REST Framework 3.16.x
  • Base de Datos: MySQL (y soporte inicial para MongoDB/Firestore)
  • Broker & Caché: Redis 7
  • Tareas en Segundo Plano: Celery + Django Celery Beat
  • WebSockets: Django Channels 4.x

📋 Requisitos Previos

  • Docker y Docker Compose (Recomendado)
  • Python 3.10+ (si se corre localmente sin Docker)
  • Redis Server (localmente)
  • Base de datos MySQL

⚙️ Configuración del Entorno

  1. Clona el proyecto.
  2. Copia el archivo de variables de entorno de ejemplo: bash cp .env.example .env
  3. Configura tus variables locales (DB, Redis, Email, Secret Key) en .env.

🐳 Ejecución con Docker (Recomendado)

El proyecto incluye un docker-compose.yml que levanta todos los servicios necesarios: la API, Celery Worker, Celery Beat y Redis.

# Construir la imagen y levantar los contenedores
docker-compose up --build

# Correr en segundo plano
docker-compose up -d

Los servicios estarán disponibles en: - API interna / Documentación: http://localhost:<PUERTO_CONFIGURADO>/apiweb/swagger/

💻 Ejecución Local

Si prefieres no usar Docker, asegura que tienes Redis y MySQL corriendo, instala las dependencias y corre los comandos clásicos de Django:

# Crear entorno virtual e instalar dependencias
python -m venv venv
source venv/bin/activate  # En Windows: .\venv\Scripts\activate
pip install -r requirements.txt

# Aplicar migraciones y levantar el servidor
python manage.py makemigrations
python manage.py migrate
python manage.py runserver

# En terminales separadas para Celery:
celery -A django-template-api worker --loglevel=info
celery -A django-template-api beat --loglevel=info --scheduler django_celery_beat.schedulers:DatabaseScheduler

🏗️ Creación de Nuevas Aplicaciones

Para mantener la limpieza de la arquitectura (donde se separan vistas, serializadores, modelos, servicios empresariales, etc.), utiliza el comando automatizado para crear nuevas aplicaciones.

Desde PowerShell:

.\create_app.ps1 -AppName "mi_app"

Alternativamente usando el custom command de Django:

python manage.py startapp_custom mi_app

Una vez creada, recuerda añadir tu nueva app en INSTALLED_APPS (en config/settings.py) y sus rutas en config/urls.py.

📚 Arquitectura y Estructura

Para más detalles explicados sobre la estructura de directorios, servicios, integraciones de ruteo, WSGI/ASGI y convenciones de este proyecto, por favor consulta la Documentación de Estructura.