Gestión de Equipo - Three Trackr
Estado Actual
Funcionalidades Implementadas
- Listado de miembros del equipo (desde GraphQL)
- Búsqueda de miembros (por nombre o email)
- Interfaz de invitación (formulario completo)
- Integración con Supabase Auth para invitaciones
- Traducciones completas (ES/EN)
- Estados visuales de usuario (con indicador de "En línea")
- Manejo de errores con toasts
- Tipos TypeScript completos
Funcionalidades Pendientes
- Estado de usuario en tiempo real (planificado)
- Cambio de roles (UI lista, lógica pendiente)
- Eliminación de miembros (UI lista, lógica pendiente)
Cómo Probar la Invitación
1. Configuración de Variables de Entorno
Copiar el template y editar con tus credenciales de Supabase:
Variables requeridas:
- NEXT_PUBLIC_SUPABASE_URL - URL de tu proyecto Supabase
- NEXT_PUBLIC_SUPABASE_ANON_KEY - Clave anónima
- SUPABASE_SERVICE_ROLE_KEY - Clave de servicio (MANTENER SECRETO)
- NEXT_PUBLIC_SITE_URL - URL de tu sitio
2. Obtener las Credenciales de Supabase
- Ve a supabase.com
- Selecciona tu proyecto
- Ve a Settings → API
- Copia las claves necesarias
3. Configurar Autenticación en Supabase
- Ve a Authentication → Settings
- En Site URL agrega tu dominio local
- En Redirect URLs agrega tu callback URL
4. Probar la Invitación
- Navega a la página del equipo
- Haz click en "Invitar Miembro"
- Completa el formulario con email y rol
- Haz click en "Enviar Invitación"
Flujo de Invitación
- Usuario hace click en 'Invitar'
- Abre formulario
- Completa email y rol
- Envía formulario
- Supabase Admin: inviteUserByEmail
- Supabase envía email
- Usuario recibe email
- Click en enlace del email
- Usuario completa registro
Estructura del Código
El código se organiza en:
- page.tsx - Página principal con query GraphQL
- view.tsx - Componente de UI principal
- actions.ts - Server actions para invitaciones
Componentes Clave
TeamsView (view.tsx)
- Manejo del estado del formulario
- Filtrado de miembros
- Interfaz de invitación
- Gestión de errores
inviteMemberAction (actions.ts)
- Integración con Supabase Auth
- Envío de invitaciones por email
- Revalidación de la página
UI/UX Features
Estado Visual
- Indicador online: Punto verde animado
- Avatares: Con iniciales como fallback
- Badges de roles: Con iconos distintivos
- Búsqueda en tiempo real: Filtrado instantáneo
Traducciones
- Español completo: Todas las cadenas traducidas
- Inglés completo: Traducciones verificadas
- Estructura limpia: dashboard.org.team.*
Troubleshooting
Error: "Failed to send invitation"
- Verifica las variables de entorno
- Confirma que el SUPABASE_SERVICE_ROLE_KEY es correcto
- Revisa que la URL del sitio esté configurada en Supabase
Error: "Invalid redirect URL"
- Agrega tu dominio local en Supabase Dashboard
- Verifica NEXT_PUBLIC_SITE_URL en el .env.local
No se muestran miembros
- Verifica que el query GraphQL esté funcionando
- Revisa la consola del navegador por errores
Próximos Pasos
Estado en Tiempo Real
Implementar WebSocket/Server-Sent Events para:
- Estado online/offline de usuarios
- Actualizaciones automáticas de la lista
- Notificaciones de nuevas invitaciones
Gestión de Roles Avanzada
Completar las acciones pendientes:
- updateMemberRoleAction() - Cambiar rol de miembro
- removeMemberAction() - Eliminar miembro
¿Necesitas Ayuda?
Si encuentras algún problema:
- Revisa la consola: Tanto del navegador como del servidor
- Verifica las variables: Especialmente las credenciales de Supabase
- Supabase Dashboard: Revisa los logs de autenticación
- GraphQL: Confirma que el endpoint esté funcionando
¡La funcionalidad de invitación está lista para probar!