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.
Stack
🚀 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 (
backendybroker). - 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.ps1y 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
- Clona el proyecto.
- Copia el archivo de variables de entorno de ejemplo:
bash cp .env.example .env - 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.