Apariencia
Dashboard del candidato
URL: /dashboard
Centro de operaciones del candidato. Resume su estado y da acceso rápido a todas las secciones.
Layout
┌─────────────────────────────────────────────────────────┐
│ Hola, Ana 👋 │
│ Tu membresía expira el 04/julio/2026 (76 días restantes)│
├─────────────────────────────────────────────────────────┤
│ ┌─ Perfil ──────┐ ┌─ Psicométricos ─┐ ┌─ CV ───────┐│
│ │ 85% completo │ │ 1 de 2 ✓ │ │ Descargar ││
│ │ [Editar] │ │ [Continuar] │ │ [PDF] ││
│ └───────────────┘ └─────────────────┘ └────────────┘│
├─────────────────────────────────────────────────────────┤
│ Checklist de activación │
│ ✅ Registra cuenta │
│ ✅ Verifica correo │
│ ✅ Contrata membresía │
│ ✅ Completa perfil (≥ 80%) │
│ ⬜ Completa pruebas psicométricas requeridas │
│ ⬜ Sube foto de perfil │
├─────────────────────────────────────────────────────────┤
│ Próximas entrevistas │
│ 📅 Martes 22 abril · Desarrollador Backend · Startup │
│ 📅 Jueves 24 abril · Product Manager · Corporativo │
├─────────────────────────────────────────────────────────┤
│ Tus asignaciones activas │
│ • Desarrollador Backend · Startup ABC · En entrevista │
│ • Product Manager · Corporativo XYZ · Propuesta │
└─────────────────────────────────────────────────────────┘Widgets
Banner de membresía
Colores según estado:
- Verde — activa con > 30 días restantes.
- Amarillo — activa con ≤ 30 días (alerta preventiva).
- Rojo — expirada, invita a renovar.
- Gris — sin membresía, invita a contratar.
Tarjetas de progreso (3)
- Perfil: porcentaje calculado en frontend (ver Perfil profesional).
- Psicométricos:
n completadas / m disponibles. - CV: botón directo a descarga PDF.
Checklist de onboarding
Lista de tareas pendientes. Se actualiza en tiempo real con los endpoints de perfil/membresía. Cuando todas están completas, desaparece.
Próximas entrevistas
Trae las 3 más cercanas con estado propuesta o confirmada. Ordenadas por scheduled_at ascendente.
Asignaciones activas
Lista de VacancyAssignment donde el candidato está en etapas no terminales (sourced, presented, interviewing, finalist). Para cada una muestra:
- Título de la vacante
- Nombre de la empresa
- Etapa actual
- Fecha de última actualización
El candidato NO puede editar la etapa — es informativo.
Accesos rápidos del header
- Campana de notificaciones (
NotificationBell) con badge de sin-leer. - Avatar con menú: Mi perfil, Configuración, Cerrar sesión.
- Toggle de tema claro/oscuro.
Data loading
Todos los widgets usan TanStack Query con stale time 15–60s:
ts
useAuth() // session store Zustand
useMembership() // /me/membership, staleTime 60s
useProfile() // /me/profile, staleTime 30s
useUpcomingInterviews() // /me/interviews?upcoming=1, staleTime 60s
useAssignments() // /me/assignments, staleTime 30s
useNotifications() // polling cada 60sEstados de carga y error
- Loading: cada widget tiene su propio
<Skeleton />mientras carga. - Error: toast con mensaje + botón "Reintentar".
- Empty: cada sección tiene ilustración + texto "Aún no tienes X".
Responsive
- Desktop (>1024px): 3 columnas de tarjetas.
- Tablet (768–1024): 2 columnas.
- Mobile (<768): 1 columna, widgets apilados.
Siguiente sección
Ya que conoces toda la experiencia del candidato, pasa al lado del equipo HUMAE: Directorio de talento (Recruiter) →

