# 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 1. **Clonar el repositorio** ```bash git clone cd don_confiao_backend ``` 2. **Iniciar servicios de desarrollo** ```bash docker-compose -f docker-compose.dev.yml up ``` 3. **Aplicar migraciones** ```bash docker-compose -f docker-compose.dev.yml run --rm django python manage.py migrate ``` 4. **Crear superusuario** ```bash docker-compose -f docker-compose.dev.yml run --rm django python manage.py createsuperuser ``` 5. **Acceder a la aplicación** - API: http://localhost:7000 - Admin: http://localhost:7000/admin ### Producción 1. **Configurar variables de entorno** ```bash cp .env.production.example .env.production # Editar .env.production con valores reales ``` 2. **Generar SECRET_KEY segura** ```bash python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())' ``` 3. **Iniciar servicios** ```bash docker-compose -f docker-compose.prod.yml up -d ``` 4. **Las migraciones y collectstatic se ejecutan automáticamente** - Si necesitas ejecutarlas manualmente: ```bash 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 ``` 5. **Crear superusuario** ```bash 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 ```bash # 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 ```bash # 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`: ```bash TRYTON_HOST=your-tryton-server TRYTON_DATABASE=your-database TRYTON_USERNAME=your-username TRYTON_PASSWORD=your-password ``` ## Backup y Restore ### Crear Backup ```bash ./scripts/backup-db.sh ``` Los backups se guardan en `backups/` y se mantienen por 7 días. ### Restaurar Backup ```bash ./scripts/restore-backup.sh backups/backup_file.sql.gz ``` ## Troubleshooting Ver la sección de Troubleshooting en [AGENTS.md](AGENTS.md) para soluciones a problemas comunes. ### Problemas Comunes 1. **Error de conexión a base de datos**: Verificar que PostgreSQL esté corriendo 2. **CSRF errors**: Verificar `CSRF_TRUSTED_ORIGINS` en `.env.production` 3. **Static files no cargan**: Ejecutar `collectstatic` 4. **Errores de migración**: Verificar estado con `showmigrations` ## Seguridad ### Checklist de Producción Antes de desplegar a producción: - [ ] `DEBUG=False` en `.env.production` - [ ] `SECRET_KEY` única y segura generada - [ ] `ALLOWED_HOSTS` configurado correctamente - [ ] `CORS_ALLOWED_ORIGINS` limitado 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 ```bash # Agregar a requirements.txt echo "nueva-dependencia==version" >> requirements.txt # Reconstruir contenedor docker-compose -f docker-compose.dev.yml build --no-cache ``` ### Tests ```bash # 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 1. Fork el proyecto 2. Crear branch de feature (`git checkout -b feature/AmazingFeature`) 3. Commit cambios (`git commit -m 'Add some AmazingFeature'`) 4. Push al branch (`git push origin feature/AmazingFeature`) 5. Abrir Pull Request ## Licencia [Especificar licencia] ## Contacto [Información de contacto] ## Documentación Adicional - [AGENTS.md](AGENTS.md) - Contexto completo del proyecto y troubleshooting - [.env.production.example](.env.production.example) - Ejemplo de variables de producción