**Idioma:** [English](README.md) | [Русский](README.ru.md) | [Deutsch](README.de.md) | [Español](README.es.md) # EUSRR EUSRR es un portal empresarial interno para empleados, solicitudes, documentos, compras, planificación, asistencia y comunicación en tiempo real. La aplicación actual consta de un backend ASGI Django/DRF y un frontend Next.js. ## Funcionalidad - directorio de empleados, departamentos, puestos, permisos y sincronización LDAP/AD opcional; - solicitudes, aprobaciones, tareas y cambios de estado con notificaciones; - documentos, adjuntos, comentarios y confirmaciones; - compras, rutas de aprobación, presupuestos e inventario; - calendarios, eventos compartidos y análisis de asistencia mediante LogStorm; - chats, reacciones, encuestas y notificaciones por una conexión WebSocket autenticada; - entrega mediante WebSocket, correo electrónico y Web Push. ## Stack - Backend: Python 3.13, Django 5.2, Django REST Framework, Channels y Daphne. - Datos y tareas: PostgreSQL, Redis, Celery y Celery Beat. - Frontend: Next.js 16, React 19, TypeScript, Tailwind CSS, TanStack Table y Recharts. - Integraciones: LDAP/Active Directory, Web Push y LogStorm. - Pruebas: pytest/pytest-django, Node test runner, ESLint y build de producción Next.js. Las versiones fijadas están en [`backend/requirements.txt`](backend/requirements.txt) y [`frontend/package.json`](frontend/package.json). ## Documentación y contratos - [Índice de documentación](docs/README.md) - [HTTP API](docs/guides/API.md) - [LDAP y Active Directory](docs/guides/LDAP.md) - [WebSocket y tiempo real](docs/guides/WEBSOCKET.md) - [Notificaciones](docs/guides/NOTIFICATIONS.md) Con el backend iniciado, Swagger está en `/api/docs/`, ReDoc en `/api/redoc/`, OpenAPI en `/api/schema/`, la documentación WebSocket en `/api/ws/docs/` y AsyncAPI en `/api/ws/schema/`, todos en el puerto 8000. ## Estructura ```text backend/ Aplicaciones Django, REST API, tareas Celery, migraciones y pruebas backend frontend/ Aplicación Next.js y pruebas frontend docs/ Guías actualizadas de API, integraciones, operaciones y desarrollo ``` ## Desarrollo local Se requieren Python 3.13, Node.js 20 o posterior, PostgreSQL y Redis. `backend/docker-compose.yml` solo crea un entorno Samba AD de pruebas; no es un stack completo de la aplicación. ```bash cp .env.example .env ``` El ejemplo utiliza los hostnames de servicio `db` y `redis`. Si los servicios se ejecutan localmente, cambia `DB_HOST` y `REDIS_HOST` a `127.0.0.1`, establece `DEBUG=True` y proporciona una base PostgreSQL y credenciales válidas. LDAP está desactivado en el ejemplo. Backend: ```bash cd backend python3.13 -m venv .venv source .venv/bin/activate python -m pip install -r requirements.txt python manage.py migrate daphne -b 0.0.0.0 -p 8000 eusrr_backend.asgi:application ``` Celery para notificaciones asíncronas y otras tareas en segundo plano: ```bash cd backend celery -A eusrr_backend worker -l info celery -A eusrr_backend beat -l info ``` Frontend: ```bash cd frontend cp .env.example .env.local npm install npm run dev ``` Abre `http://localhost:3000`. Next.js redirige las solicitudes HTTP del browser a `NEXT_PUBLIC_BACKEND_URL`; realtime utiliza el endpoint `/ws/` del backend. ## Verificación ```bash cd backend pytest python manage.py check ``` ```bash cd frontend npm test npm run lint npm run build ``` ## Seguridad y datos Los archivos de entorno, bases locales, uploads, certificados, builds generados y dependencias se ignoran en Git. No deben añadirse datos de producción ni secrets al repositorio. Los settings legacy todavía contienen valores fallback para LDAP y VAPID. Fuera de un entorno aislado deben sobrescribirse todas las credenciales mediante variables de entorno y rotarse cualquier clave que haya estado en el código. También deben revisarse los dominios, branding y DN específicos de la empresa.