Modern Dev Template for Real Projects
Este repositorio es una plantilla profesional reutilizable basada en:
- ✅ Autenticación JWT con Refresh Token
- ✅ Rotación y blacklist de tokens
- ✅ Sistema de roles (admin, staff, client)
- ✅ Módulo de productos desacoplable
- ✅ Rate limiting contra fuerza bruta
- ✅ Tests automatizados con Pytest
- ✅ 100% Dockerizado
Pensado como base para futuros SaaS, APIs privadas, backends móviles y microservicios.
- Django 4.2
- Python 3.11
- Django REST Framework
- PostgreSQL 15
- SimpleJWT (con rotación)
- Pytest + Factory Boy + Faker
- Docker & Docker Compose
Client → API (Django) → Auth (JWT + Roles) → PostgreSQL
- JWT Access + Refresh
- Rotación automática de Refresh Tokens
- Blacklist de tokens antiguos
- Protección de rutas por rol
- Rate Limiting en login
docker-compose up --buildLa API estará disponible en:
http://localhost:8000/api/
docker-compose downdocker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build| Método | Endpoint | Descripción |
|---|---|---|
| POST | /api/login/ | Login con JWT |
| POST | /api/refresh/ | Refresh token |
| GET | /api/protected/ | Vista protegida |
| Método | Endpoint | Descripción | | GET | /api/products/ | Listar productos | | POST | /api/products/ | Crear producto (staff/admin) | | DELETE | /api/products/{id}/ | Eliminar (solo admin) |
Incluye tests completos de:
- Autenticación
- JWT
- Rate limiting
- Permisos por rol
- Productos
- Accesos restringidos
Ejecución:
docker-compose exec web pytestIncluye comandos para generar:
- ✅ 5 usuarios falsos
- ✅ 20 productos de prueba
Usando Faker.
Se generan automáticamente:
- Clientes
- Staff
- Admin
Y productos falsos usando Faker.
postgres por defecto. Se define un usuario personalizado en el archivo .env:
POSTGRES_USER=django_user
POSTGRES_PASSWORD=django_pass
POSTGRES_DB=django_dbdocker-compose exec db psql -U django_user -d django_dbdocker-compose exec db psql -U postgres\l -- listar bases de datos
\dt -- listar tablas
\du -- listar usuariosEjemplos:
SELECT * FROM users_customuser;
SELECT * FROM products_product;- JWT con rotación
- Blacklist de refresh tokens
- Rate limiting en login
- Validaciones por rol
project/
├── myproject/
├── users/ # CustomUser + Roles
├── products/ # Módulo desacoplable
├── tests/
├── docker-compose.yml
├── requirements.txt
- ✅ JWT + Refresh Rotation
- ✅ Rate Limiting
- ✅ Roles
- ✅ Tests
- 🔜 Logs estructurados
- 🔜 Monitoreo
- 🔜 CI/CD
Este proyecto funciona como plantilla base reutilizable para futuros proyectos:
- APIs seguras
- Backend moderno
- Tests incluidos desde el inicio
- Docker listo para producción
Este proyecto ya es una plantilla backend profesional de nivel intermedio-avanzado, ideal para:
- Startups
- Proyectos personales
- Freelance
- Portafolio técnico
- Formación avanzada
Proyecto educativo para aprendizaje y reutilización.