Skip to content

Commit 426c9fd

Browse files
committed
fix docs
1 parent a9e26d8 commit 426c9fd

File tree

2 files changed

+332
-164
lines changed

2 files changed

+332
-164
lines changed

README.md

Lines changed: 130 additions & 164 deletions
Original file line numberDiff line numberDiff line change
@@ -1,202 +1,168 @@
1-
# 🚀 Proyecto Django + PostgreSQL + Docker
2-
Modern Dev Edition
1+
# 🚀 Django API Template --- Docker • JWT • Roles • Tests
32

4-
![Status](https://img.shields.io/badge/status-active-success)
3+
**Modern Dev Template for Real Projects**
4+
5+
![Status](https://img.shields.io/badge/status-template-success)
56
![Python](https://img.shields.io/badge/Python-3.11-blue)
67
![Django](https://img.shields.io/badge/Django-4.2-green)
78
![Docker](https://img.shields.io/badge/Docker-Ready-blue)
89
![PostgreSQL](https://img.shields.io/badge/Postgres-15-lightblue)
10+
![JWT](https://img.shields.io/badge/Auth-JWT-orange)
11+
![Tests](https://img.shields.io/badge/Tests-Pytest-success)
912
![License](https://img.shields.io/badge/license-MIT-yellow)
1013

11-
---
12-
13-
# 📚 Tabla de Contenido
14-
- [📦 Sobre el Proyecto](#-sobre-el-proyecto)
15-
- [⚙️ Stack Tecnológico](#️-stack-tecnológico)
16-
- [🧱 Arquitectura](#-arquitectura)
17-
- [🐳 Docker Compose Overview](#-docker-compose-overview)
18-
- [🚀 Instalación](#-instalación)
19-
- [🧪 Uso](#-uso)
20-
- [📡 Endpoints API](#-endpoints-api)
21-
- [🗂 Estructura del Proyecto](#-estructura-del-proyecto)
22-
- [🔧 Troubleshooting](#-troubleshooting)
23-
- [🗺 Roadmap](#-roadmap)
24-
- [📄 Licencia](#-licencia)
25-
26-
---
27-
28-
# 📦 Sobre el Proyecto
29-
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.
30-
31-
💡 Perfecto para **bootcamps**, **entrevistas técnicas**, **prototipos** y **proyectos base**.
32-
33-
---
34-
35-
# ⚙️ Stack Tecnológico
36-
- **Django 4.2**
37-
- **Python 3.11**
38-
- **Django REST Framework**
39-
- **PostgreSQL 15**
40-
- **Docker & Docker Compose**
41-
- **Mermaid Diagrams**
42-
- **Volúmenes persistentes**
43-
44-
---
45-
46-
# 🧱 Arquitectura
47-
48-
## 🔷 Arquitectura General
49-
```mermaid
50-
graph TD
51-
A[Cliente / Navegador] -->|HTTP| B(Django API)
52-
B -->|ORM| C[(PostgreSQL)]
53-
B --> D[Volumen del Código]
54-
C --> E[Volumen Persistente]
55-
```
14+
------------------------------------------------------------------------
5615

57-
## 🔷 Flujo de Autenticación
58-
```mermaid
59-
sequenceDiagram
60-
participant U as Usuario
61-
participant A as API Django
62-
participant DB as Base de Datos
63-
U->>A: POST /api/users/login/
64-
A->>DB: Validar credenciales
65-
DB-->>A: Usuario válido
66-
A-->>U: Respuesta con sesión
67-
```
16+
## 📦 Sobre el Proyecto
6817

69-
---
70-
71-
# 🐳 Docker Compose Overview
72-
```yaml
73-
services:
74-
db:
75-
image: postgres:15-alpine
76-
environment:
77-
POSTGRES_DB: django_db
78-
POSTGRES_USER: django_user
79-
POSTGRES_PASSWORD: django_pass
80-
81-
web:
82-
build: .
83-
command: python manage.py runserver 0.0.0.0:8000
84-
volumes:
85-
- .:/app
86-
ports:
87-
- "8000:8000"
88-
depends_on:
89-
- db
90-
```
18+
Este repositorio es una **plantilla profesional reutilizable** basada
19+
en:
9120

92-
---
21+
- ✅ Autenticación JWT con Refresh Token
22+
- ✅ Rotación y blacklist de tokens
23+
- ✅ Sistema de roles (admin, staff, client)
24+
- ✅ Módulo de productos desacoplable
25+
- ✅ Rate limiting contra fuerza bruta
26+
- ✅ Tests automatizados con Pytest
27+
- ✅ 100% Dockerizado
9328

94-
# 🚀 Instalación
29+
Pensado como **base para futuros SaaS, APIs privadas, backends móviles y
30+
microservicios**.
9531

96-
### 1️⃣ Clonar el repositorio
97-
```bash
98-
git clone https://github.com/tuusuario/django-docker-postgres.git
99-
cd django-docker-postgres
100-
```
32+
------------------------------------------------------------------------
10133

102-
### 2️⃣ Construir contenedores
103-
```bash
104-
docker-compose build
105-
```
34+
## ⚙️ Stack Tecnológico
10635

107-
### 3️⃣ Inicializar proyecto (solo primera vez)
108-
```bash
109-
docker-compose run --rm web django-admin startproject myproject .
110-
docker-compose run --rm web python manage.py startapp users
111-
```
36+
- Django 4.2
37+
- Python 3.11
38+
- Django REST Framework
39+
- PostgreSQL 15
40+
- SimpleJWT (con rotación)
41+
- Pytest + Factory Boy + Faker
42+
- Docker & Docker Compose
43+
44+
------------------------------------------------------------------------
45+
46+
## 🧱 Arquitectura General
11247

113-
### 4️⃣ Migraciones
114-
```bash
115-
docker-compose run --rm web python manage.py migrate
48+
Client → API (Django) → Auth (JWT + Roles) → PostgreSQL
49+
50+
------------------------------------------------------------------------
51+
52+
## 🔐 Seguridad Implementada
53+
54+
- JWT Access + Refresh
55+
- Rotación automática de Refresh Tokens
56+
- Blacklist de tokens antiguos
57+
- Protección de rutas por rol
58+
- Rate Limiting en login
59+
60+
------------------------------------------------------------------------
61+
62+
## 🐳 Docker --- Modos de Ejecución
63+
64+
### 🔹 Modo Desarrollo
65+
66+
``` bash
67+
docker-compose up --build
11668
```
11769

118-
### 5️⃣ Crear superusuario
119-
```bash
120-
docker-compose run --rm web python manage.py createsuperuser
70+
### 🔹 Modo Producción (simulado)
71+
72+
``` bash
73+
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build
12174
```
12275

123-
---
76+
------------------------------------------------------------------------
12477

125-
# 🧪 Uso
78+
## 📡 Endpoints Principales
12679

127-
### Ejecutar el proyecto:
128-
```bash
129-
docker-compose up
130-
```
80+
### Auth
13181

132-
### Acceder:
133-
- API → http://localhost:8000/api/users/
134-
- Admin → http://localhost:8000/admin/
82+
Método Endpoint Descripción
83+
-------- --------------------- --------------------
84+
POST /api/login/ Login JWT
85+
POST /api/token/refresh/ Refresh token
86+
POST /api/logout/ Logout + Blacklist
87+
GET /api/protected/ Ruta protegida
13588

136-
---
89+
### Productos
13790

138-
# 📡 Endpoints API
91+
Método Endpoint
92+
-------- ------------------------------
93+
GET /api/products/
94+
POST /api/products/
95+
DELETE /api/products/`<id>`{=html}/
13996

140-
| Método | Endpoint | Descripción |
141-
|--------|----------|-------------|
142-
| POST | `/api/users/` | Crear usuario |
143-
| GET | `/api/users/` | Listar usuarios |
144-
| POST | `/api/users/login/` | Autenticar |
145-
| GET | `/api/users/me/` | Perfil logueado |
146-
| POST | `/api/users/change_password/` | Cambiar contraseña |
147-
| POST | `/api/users/logout/` | Cerrar sesión |
97+
------------------------------------------------------------------------
14898

149-
---
99+
## 🧪 Tests Automatizados
150100

151-
# 🗂 Estructura del Proyecto
152-
```
153-
proyecto/
154-
├── docker-compose.yml
155-
├── Dockerfile
156-
├── requirements.txt
157-
├── myproject/
158-
│ ├── settings.py
159-
│ ├── urls.py
160-
│ └── wsgi.py
161-
└── users/
162-
├── models.py
163-
├── views.py
164-
├── serializers.py
165-
└── urls.py
166-
```
101+
Incluye tests completos de:
167102

168-
---
103+
- Autenticación
104+
- JWT
105+
- Rate limiting
106+
- Permisos por rol
107+
- Productos
108+
- Accesos restringidos
169109

170-
# 🔧 Troubleshooting
110+
Ejecución:
171111

172-
### ❗ Base de datos no disponible
173-
```bash
174-
docker-compose logs db
112+
``` bash
113+
docker-compose exec web pytest
175114
```
176115

177-
### ❗ Cambios no aparecen en el servidor
178-
```bash
179-
docker-compose restart web
180-
```
116+
------------------------------------------------------------------------
181117

182-
### ❗ Limpiar entorno Docker
183-
```bash
184-
docker system prune -a
185-
docker volume prune
186-
```
118+
## 🧰 Precarga de Datos
119+
120+
Incluye comandos para generar:
121+
122+
- ✅ 5 usuarios falsos
123+
- ✅ 20 productos de prueba
124+
125+
Usando Faker.
126+
127+
------------------------------------------------------------------------
128+
129+
## 🗂 Estructura del Proyecto
130+
131+
project/
132+
├── myproject/
133+
├── users/ # CustomUser + Roles
134+
├── products/ # Módulo desacoplable
135+
├── tests/
136+
├── docker-compose.yml
137+
├── requirements.txt
138+
139+
------------------------------------------------------------------------
140+
141+
## 🗺 Roadmap Técnico
142+
143+
- ✅ JWT + Refresh Rotation
144+
- ✅ Rate Limiting
145+
- ✅ Roles
146+
- ✅ Tests
147+
- 🔜 Logs estructurados
148+
- 🔜 Monitoreo
149+
- 🔜 CI/CD
150+
151+
------------------------------------------------------------------------
152+
153+
## ✅ Conclusión
187154

188-
---
155+
Este proyecto ya es una **plantilla backend profesional de nivel
156+
intermedio-avanzado**, ideal para:
189157

190-
# 🗺 Roadmap
191-
- [ ] Integrar JWT
192-
- [ ] Añadir Nginx + Gunicorn
193-
- [ ] Tests unitarios (pytest + DRF)
194-
- [ ] CI/CD con GitHub Actions
195-
- [ ] Documentación con Swagger/OpenAPI
158+
- Startups
159+
- Proyectos personales
160+
- Freelance
161+
- Portafolio técnico
162+
- Formación avanzada
196163

197-
---
164+
------------------------------------------------------------------------
198165

199-
# 📄 Licencia
200-
Este proyecto está bajo licencia **MIT**.
166+
## 📄 Licencia
201167

202-
---
168+
MIT --- Uso libre para cualquier proyecto.

0 commit comments

Comments
 (0)