3.8 KiB
Idioma: English | Русский | Deutsch | Español
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
y frontend/package.json.
Documentación y contratos
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
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.
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:
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:
cd backend
celery -A eusrr_backend worker -l info
celery -A eusrr_backend beat -l info
Frontend:
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
cd backend
pytest
python manage.py check
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.