Dashboard · Asistencia · Nóminas · Autenticación por roles · Diseño Sand & Terracotta
- Paginación optimizada con saltos de página truncados y flechas de navegación.
- Filtros avanzados — Selector minimalista de empleados y selector de fechas con calendario animado, ambos construidos desde cero con Lucide React.
- Tablas ordenables — Click en cabeceras para ordenar por cualquier columna con indicadores visuales de dirección.
- Autenticación fluida — Login, registro y recuperación de contraseña con fondo dinámico de esferas animadas y glassmorphism.
- Sidebar responsive — Colapsable con preservación de estado en localStorage, roles de usuario y footer anclado.
- Modo oscuro completo con paleta de colores consistente.
- Exportación CSV con BOM para compatibilidad con Excel.
- API REST con autenticación por token (DRF TokenAuth).
- CRUD completo de empleados con carga de foto de perfil.
- Módulo de asistencia con detección automática de retardos (> 8:05 AM).
- Cálculo de nómina mensual con deducciones, bonos y almacenamiento histórico.
- Dashboard con KPIs diferenciados por rol (admin / empleado).
- Seed de datos de demostración (10 empleados, 30 días de asistencias, 3 meses de nóminas).
| Capa | Tecnología |
|---|---|
| Frontend | React 19, Vite 8, React Router 7, Bootstrap 5, Lucide React |
| Componentes | ThSortable, Pagination, ScrollableTable, MinimalSelect, MinimalDatePicker |
| Gráficos | Recharts |
| Backend | Django 5, Django REST Framework, MySQL 8 |
| Formato | react-number-format |
- Python 3.10+
- Node.js 18+
- MySQL 8+
cd backend
pip install -r requirements.txt
cp ../.env.example .env # Edita con tus credenciales MySQL
python manage.py migrate
python manage.py seed_data # Datos de demostración
python manage.py runserverUsuarios de demostración:
| Usuario | Contraseña | Rol |
|---|---|---|
admin |
admin123 |
Administrador |
empleado1 |
empleado123 |
Empleado |
cd frontend
npm install
npm run devAbre http://localhost:5173 en tu navegador.
npm run dev # Desarrollo con HMR
npm run build # Producción
npm run preview # Vista previa de buildrh-manager/
├── backend/
│ ├── empleados/
│ │ ├── models.py
│ │ ├── views.py
│ │ ├── serializers.py
│ │ └── management/commands/seed_data.py
│ └── rh_django/settings.py
├── frontend/
│ ├── src/
│ │ ├── components/ # ThSortable, Pagination, MinimalSelect, DatePicker, ScrollableTable
│ │ ├── empleados/ # Dashboard, ListadoEmpleados, ControlAsistencias, ControlNominas
│ │ ├── AuthContext.jsx # Autenticación con tokens
│ │ ├── Navegacion.jsx # Sidebar responsive
│ │ └── index.css # Sistema de diseño Sand & Terracotta completo
│ └── public/assets/readme/ # Capturas para el README
└── README.md
| Método | Endpoint | Descripción | Auth |
|---|---|---|---|
| POST | /api/auth/register |
Registro | No |
| POST | /api/auth/login |
Login (Token) | No |
| POST | /api/auth/recover-password |
Recuperación | No |
| GET | /api/dashboard |
KPIs por rol | Sí |
| GET/POST/PATCH/DELETE | /api/empleados[/id] |
CRUD empleados | Sí |
| GET/POST/PATCH | /api/asistencias[/id] |
Asistencias | Sí |
| GET/POST | /api/nominas[/id] |
Nóminas | Sí |
| GET/POST | /api/configuracion-nomina |
Configuración | Sí |
| Pantalla | Vista |
|---|---|
| Login | ![]() |
| Registro | ![]() |
| Listado de Empleados | ![]() |
| Control de Asistencia | ![]() |
| Nóminas | ![]() |
| Sidebar Expandido | ![]() |
| Sidebar Colapsado | ![]() |
| Modo Oscuro | ![]() |
Distribuido bajo la licencia MIT. Ver LICENSE para más información.








