System
apps/system/docs/routes-and-permissions
Rutas, sesión y permisos
Grupos de rutas
Auth
app/(auth) contiene login, registro, verificación de email, recuperación de contraseña,
onboarding e invitaciones. El route group no aparece en la URL.
Dashboard
app/(dashboard) contiene home, usuarios, estates, works, infractions, access y settings. Su layout
monta la navegación y ejecuta useInitAuth.
Redirecciones
modules/shared/utils/redirect.utils.ts centraliza el flujo:
- Mientras se carga el usuario no redirige.
- Usuarios no autenticados van a login salvo rutas públicas o de invitación.
- El super admin debe verificar email y completar onboarding.
- Usuarios invitados deben completar el flujo de invitación si todavía no tienen contexto.
- Usuarios activos que acceden a rutas públicas o de registro son enviados al home.
Las constantes de rutas y redirects provienen de @repo/constants. No hardcodear rutas en páginas o
hooks si ya existe una constante.
Permisos
modules/shared/utils/permission.utils.ts convierte los roles en permisos usando
ROLE_PERMISSIONS de @repo/constants. routePermission filtra los items de navegación visibles.
La visibilidad de navegación es una ayuda de UX, no una frontera de seguridad. La autorización real debe existir también en Firestore Rules o en la callable function correspondiente.
Contexto seleccionado
El store de auth conserva communityId y role seleccionados en localStorage. El contexto se
considera listo cuando existen usuario, comunidad/roles, rol activo y permisos. Los cambios de
contexto deben actualizar el store mediante sus acciones y no escribiendo estado aislado en los
componentes.