- Add docker-compose.staging.yml with PostgreSQL and Django - Add .env.staging.example with staging-specific environment variables - Configure staging settings (DEBUG=False, no SSL redirect for localhost) - Update settings/__init__.py to support staging environment detection - Update AGENTS.md with staging environment documentation - Update .gitignore to exclude .env.staging - Optimize docker-compose.prod.yml configuration Staging environment simulates production configuration locally: - PostgreSQL database (port 5433 to avoid conflicts) - Gunicorn with 4 workers - DEBUG=False but HTTP allowed for easier testing - Separate volumes for static files, media, and logs Usage: cp .env.staging.example .env.staging docker compose -f docker-compose.staging.yml up -d
Don Confiao Backend - Tienda Ilusion
Backend Django con Django REST Framework para el sistema de punto de venta Tienda Ilusion.
Características
- 🔐 Autenticación JWT con djangorestframework-simplejwt
- 🗄️ Soporte multi-ambiente (desarrollo/producción)
- 🐘 PostgreSQL para producción, SQLite para desarrollo
- 🔄 Integración con Tryton ERP
- 📦 Docker Compose para fácil deployment
- 🛡️ Configuración de seguridad completa para producción
- 📊 API REST completa para gestión de ventas, productos y clientes
Requisitos Previos
- Docker & Docker Compose
- Python 3.11+ (para desarrollo local sin Docker)
- Git
Inicio Rápido
Desarrollo Local
-
Clonar el repositorio
git clone <repository-url> cd don_confiao_backend -
Iniciar servicios de desarrollo
docker-compose -f docker-compose.dev.yml up -
Aplicar migraciones
docker-compose -f docker-compose.dev.yml run --rm django python manage.py migrate -
Crear superusuario
docker-compose -f docker-compose.dev.yml run --rm django python manage.py createsuperuser -
Acceder a la aplicación
- API: http://localhost:7000
- Admin: http://localhost:7000/admin
Producción
-
Configurar variables de entorno
cp .env.production.example .env.production # Editar .env.production con valores reales -
Generar SECRET_KEY segura
python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())' -
Iniciar servicios
docker-compose -f docker-compose.prod.yml up -d -
Las migraciones y collectstatic se ejecutan automáticamente
- Si necesitas ejecutarlas manualmente:
docker-compose -f docker-compose.prod.yml exec django python manage.py migrate docker-compose -f docker-compose.prod.yml exec django python manage.py collectstatic --noinput -
Crear superusuario
docker-compose -f docker-compose.prod.yml exec django python manage.py createsuperuser
Estructura del Proyecto
don_confiao_backend/
├── tienda_ilusion/ # Proyecto Django
│ ├── config/ # Configuración principal
│ │ └── settings/ # Settings por ambiente
│ │ ├── base.py # Configuración compartida
│ │ ├── development.py # Desarrollo
│ │ └── production.py # Producción
│ ├── don_confiao/ # App principal
│ └── users/ # App de usuarios
├── scripts/ # Scripts de utilidad
│ ├── health-check.sh # Verificación de salud
│ ├── backup-db.sh # Backup de base de datos
│ └── restore-backup.sh # Restore de backup
├── docker-compose.dev.yml # Docker Compose desarrollo
├── docker-compose.prod.yml # Docker Compose producción
└── requirements.txt # Dependencias Python
Ambientes
Development
- Base de datos: SQLite
- Debug: Habilitado
- CORS: Permisivo
- Server: Django development server
- Puerto: 7000
Production
- Base de datos: PostgreSQL
- Debug: Deshabilitado
- CORS: Configurado por dominio
- Server: Gunicorn (4 workers)
- Puerto: 8000
- Seguridad: HTTPS, HSTS, secure cookies
Comandos Útiles
Desarrollo
# Ejecutar tests
docker-compose -f docker-compose.dev.yml run --rm django python manage.py test
# Shell de Django
docker-compose -f docker-compose.dev.yml run --rm django python manage.py shell
# Crear migraciones
docker-compose -f docker-compose.dev.yml run --rm django python manage.py makemigrations
# Ver logs
docker-compose -f docker-compose.dev.yml logs -f
Producción
# Ver logs
docker-compose -f docker-compose.prod.yml logs -f django
# Backup de base de datos
./scripts/backup-db.sh
# Restore de backup
./scripts/restore-backup.sh backups/tienda_ilusion_backup_YYYYMMDD_HHMMSS.sql.gz
# Health check
./scripts/health-check.sh prod
# Reiniciar servicios
docker-compose -f docker-compose.prod.yml restart
# Detener servicios
docker-compose -f docker-compose.prod.yml down
API Endpoints
La API REST está disponible en /api/. Principales endpoints:
/api/token/- Obtener token JWT/api/token/refresh/- Refrescar token JWT/api/customers/- Gestión de clientes/api/products/- Gestión de productos/api/sales/- Gestión de ventas/admin/- Panel de administración Django
Integración con Tryton ERP
El sistema se integra con Tryton ERP para sincronización de:
- Clientes
- Productos
- Ventas
Configurar las variables de entorno de Tryton en .env.development o .env.production:
TRYTON_HOST=your-tryton-server
TRYTON_DATABASE=your-database
TRYTON_USERNAME=your-username
TRYTON_PASSWORD=your-password
Backup y Restore
Crear Backup
./scripts/backup-db.sh
Los backups se guardan en backups/ y se mantienen por 7 días.
Restaurar Backup
./scripts/restore-backup.sh backups/backup_file.sql.gz
Troubleshooting
Ver la sección de Troubleshooting en AGENTS.md para soluciones a problemas comunes.
Problemas Comunes
- Error de conexión a base de datos: Verificar que PostgreSQL esté corriendo
- CSRF errors: Verificar
CSRF_TRUSTED_ORIGINSen.env.production - Static files no cargan: Ejecutar
collectstatic - Errores de migración: Verificar estado con
showmigrations
Seguridad
Checklist de Producción
Antes de desplegar a producción:
DEBUG=Falseen.env.productionSECRET_KEYúnica y segura generadaALLOWED_HOSTSconfigurado correctamenteCORS_ALLOWED_ORIGINSlimitado a dominios confiables- Contraseñas de base de datos seguras
- HTTPS habilitado con certificados SSL/TLS válidos
- Firewall configurado
- Backups automáticos configurados
- Monitoreo de logs configurado
Desarrollo
Agregar nuevas dependencias
# Agregar a requirements.txt
echo "nueva-dependencia==version" >> requirements.txt
# Reconstruir contenedor
docker-compose -f docker-compose.dev.yml build --no-cache
Tests
# Ejecutar todos los tests
docker-compose -f docker-compose.dev.yml run --rm django python manage.py test
# Ejecutar tests de una app específica
docker-compose -f docker-compose.dev.yml run --rm django python manage.py test don_confiao
# Con coverage
docker-compose -f docker-compose.dev.yml run --rm django coverage run --source='.' manage.py test
docker-compose -f docker-compose.dev.yml run --rm django coverage report
Contribuir
- Fork el proyecto
- Crear branch de feature (
git checkout -b feature/AmazingFeature) - Commit cambios (
git commit -m 'Add some AmazingFeature') - Push al branch (
git push origin feature/AmazingFeature) - Abrir Pull Request
Licencia
[Especificar licencia]
Contacto
[Información de contacto]
Documentación Adicional
- AGENTS.md - Contexto completo del proyecto y troubleshooting
- .env.production.example - Ejemplo de variables de producción