Modern Dev Edition
- 📦 Sobre el Proyecto
- ⚙️ Stack Tecnológico
- 🧱 Arquitectura
- 🐳 Docker Compose Overview
- 🚀 Instalación
- 🧪 Uso
- 📡 Endpoints API
- 🗂 Estructura del Proyecto
- 🔧 Troubleshooting
- 🗺 Roadmap
- 📄 Licencia
Este proyecto demuestra cómo crear un entorno Django + PostgreSQL completamente dockerizado, listo para desarrollo, con una API de usuarios basada en Django REST Framework.
💡 Perfecto para bootcamps, entrevistas técnicas, prototipos y proyectos base.
- Django 4.2
- Python 3.11
- Django REST Framework
- PostgreSQL 15
- Docker & Docker Compose
- Mermaid Diagrams
- Volúmenes persistentes
graph TD
A[Cliente / Navegador] -->|HTTP| B(Django API)
B -->|ORM| C[(PostgreSQL)]
B --> D[Volumen del Código]
C --> E[Volumen Persistente]
sequenceDiagram
participant U as Usuario
participant A as API Django
participant DB as Base de Datos
U->>A: POST /api/users/login/
A->>DB: Validar credenciales
DB-->>A: Usuario válido
A-->>U: Respuesta con sesión
services:
db:
image: postgres:15-alpine
environment:
POSTGRES_DB: django_db
POSTGRES_USER: django_user
POSTGRES_PASSWORD: django_pass
web:
build: .
command: python manage.py runserver 0.0.0.0:8000
volumes:
- .:/app
ports:
- "8000:8000"
depends_on:
- dbgit clone https://github.com/tuusuario/django-docker-postgres.git
cd django-docker-postgresdocker-compose builddocker-compose run --rm web django-admin startproject myproject .
docker-compose run --rm web python manage.py startapp usersdocker-compose run --rm web python manage.py migratedocker-compose run --rm web python manage.py createsuperuserdocker-compose up- API → http://localhost:8000/api/users/
- Admin → http://localhost:8000/admin/
| Método | Endpoint | Descripción |
|---|---|---|
| POST | /api/users/ |
Crear usuario |
| GET | /api/users/ |
Listar usuarios |
| POST | /api/users/login/ |
Autenticar |
| GET | /api/users/me/ |
Perfil logueado |
| POST | /api/users/change_password/ |
Cambiar contraseña |
| POST | /api/users/logout/ |
Cerrar sesión |
proyecto/
├── docker-compose.yml
├── Dockerfile
├── requirements.txt
├── myproject/
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── users/
├── models.py
├── views.py
├── serializers.py
└── urls.py
docker-compose logs dbdocker-compose restart webdocker system prune -a
docker volume prune- Integrar JWT
- Añadir Nginx + Gunicorn
- Tests unitarios (pytest + DRF)
- CI/CD con GitHub Actions
- Documentación con Swagger/OpenAPI
Este proyecto está bajo licencia MIT.