feat: Add deploy environment, Add pyprojectoml
This commit is contained in:
269
README.md
Normal file
269
README.md
Normal file
@@ -0,0 +1,269 @@
|
||||
# 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 <repository-url>
|
||||
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
|
||||
Reference in New Issue
Block a user