template-saas/docs/05-frontend/FRONTEND-ROUTING.md
Adrian Flores Cortes f853c49568
Some checks are pending
CI / Backend CI (push) Waiting to run
CI / Frontend CI (push) Waiting to run
CI / Security Scan (push) Waiting to run
CI / CI Summary (push) Blocked by required conditions
feat(frontend): Align documentation with development - complete frontend audit
- Add Sales/Commissions routes to router (11 new routes)
- Complete authStore (refreshTokens, updateProfile methods)
- Add JSDoc documentation to 40+ components across all categories
- Create FRONTEND-ROUTING.md with complete route mapping
- Create FRONTEND-PAGES-SPEC.md with 38 page specifications
- Update FRONTEND_INVENTORY.yml to v4.1.0 with resolved gaps

Components documented: ai/, audit/, commissions/, feature-flags/,
notifications/, sales/, storage/, webhooks/, whatsapp/

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 01:23:50 -06:00

10 KiB

Frontend Routing - Template SaaS

Versión: 1.0.0 Actualizado: 2026-01-25 Router: React Router DOM v7.1.1


Arquitectura de Routing

El sistema de routing está basado en React Router v6/7 con guards de protección para controlar el acceso a las rutas según el estado de autenticación y rol del usuario.

Archivo Principal

apps/frontend/src/router/index.tsx


Guards de Protección

Guard Descripción Redirección
GuestRoute Solo usuarios no autenticados /dashboard si está autenticado
ProtectedRoute Requiere autenticación /auth/login si no está autenticado
SuperadminRoute Requiere rol superadmin /dashboard si no tiene rol

Mapa de Rutas Completo

1. Rutas Públicas

Ruta Componente Guard Descripción
/ Navigate - Redirect a /auth/login

2. Rutas de Autenticación (/auth)

Layout: AuthLayout Guard: GuestRoute

Ruta Componente Descripción
/auth/login LoginPage Formulario de inicio de sesión
/auth/register RegisterPage Formulario de registro
/auth/forgot-password ForgotPasswordPage Recuperación de contraseña

3. Rutas de Dashboard (/dashboard)

Layout: DashboardLayout Guard: ProtectedRoute

3.1 Rutas Core

Ruta Componente Descripción
/dashboard DashboardPage Dashboard principal con métricas
/dashboard/settings SettingsPage Configuración de cuenta
/dashboard/billing BillingPage Gestión de suscripción (Stripe)
/dashboard/users UsersPage Gestión de usuarios del tenant
/dashboard/ai AIPage Panel de control AI/LLM
/dashboard/storage StoragePage Gestión de archivos
/dashboard/webhooks WebhooksPage Configuración de webhooks
/dashboard/audit AuditLogsPage Registro de auditoría
/dashboard/feature-flags FeatureFlagsPage Feature toggles
/dashboard/whatsapp WhatsAppSettings Config WhatsApp Business

3.2 Rutas de Sales (/dashboard/sales)

Ruta Componente Parámetros Descripción
/dashboard/sales SalesPage - Dashboard de ventas
/dashboard/sales/leads LeadsPage - Listado de leads
/dashboard/sales/leads/:id LeadDetailPage id: string Detalle de lead
/dashboard/sales/opportunities OpportunitiesPage - Pipeline de oportunidades
/dashboard/sales/opportunities/:id OpportunityDetailPage id: string Detalle de oportunidad
/dashboard/sales/activities ActivitiesPage - Actividades de ventas

3.3 Rutas de Commissions (/dashboard/commissions)

Ruta Componente Parámetros Descripción
/dashboard/commissions CommissionsPage - Dashboard de comisiones
/dashboard/commissions/schemes SchemesPage - Esquemas de comisiones
/dashboard/commissions/entries EntriesPage - Entradas de comisiones
/dashboard/commissions/periods PeriodsPage - Períodos de pago
/dashboard/commissions/my-earnings MyEarningsPage - Mis ganancias

4. Rutas de Superadmin (/superadmin)

Layout: DashboardLayout Guard: SuperadminRoute

Ruta Componente Parámetros Descripción
/superadmin Navigate - Redirect a /superadmin/tenants
/superadmin/tenants TenantsPage - Listado de tenants
/superadmin/tenants/:id TenantDetailPage id: string Detalle de tenant
/superadmin/metrics MetricsPage - Métricas del sistema

5. Ruta de Onboarding

Ruta Componente Guard Descripción
/onboarding OnboardingPage ProtectedRoute Wizard de onboarding (4 pasos)

6. Ruta 404 (Catch-All)

Ruta Componente Descripción
* Navigate Redirect a /

Diagrama de Navegación

                    ┌─────────────────┐
                    │       /         │
                    │  (redirect)     │
                    └────────┬────────┘
                             │
                             ▼
          ┌──────────────────┴──────────────────┐
          │                                     │
          ▼                                     ▼
┌─────────────────┐                   ┌─────────────────┐
│   /auth/*       │                   │  /dashboard/*   │
│  (GuestRoute)   │                   │ (ProtectedRoute)│
├─────────────────┤                   ├─────────────────┤
│ login           │◄─────────────────►│ (index)         │
│ register        │   login/logout    │ settings        │
│ forgot-password │                   │ billing         │
└─────────────────┘                   │ users           │
                                      │ ai              │
                                      │ storage         │
                                      │ webhooks        │
                                      │ audit           │
                                      │ feature-flags   │
                                      │ whatsapp        │
                                      │                 │
                                      │ sales/*         │
                                      │ ├─ (index)      │
                                      │ ├─ leads        │
                                      │ ├─ leads/:id    │
                                      │ ├─ opportunities│
                                      │ ├─ opportunities/:id │
                                      │ └─ activities   │
                                      │                 │
                                      │ commissions/*   │
                                      │ ├─ (index)      │
                                      │ ├─ schemes      │
                                      │ ├─ entries      │
                                      │ ├─ periods      │
                                      │ └─ my-earnings  │
                                      └────────┬────────┘
                                               │
                                               │ (superadmin only)
                                               ▼
                                      ┌─────────────────┐
                                      │ /superadmin/*   │
                                      │(SuperadminRoute)│
                                      ├─────────────────┤
                                      │ tenants         │
                                      │ tenants/:id     │
                                      │ metrics         │
                                      └─────────────────┘

Layouts

AuthLayout

  • Ubicación: src/layouts/AuthLayout.tsx
  • Uso: Rutas de autenticación (/auth/*)
  • Características:
    • Diseño de 2 columnas (branding + formulario)
    • Responsive para móvil
    • Sin sidebar ni navegación

DashboardLayout

  • Ubicación: src/layouts/DashboardLayout.tsx
  • Uso: Dashboard y Superadmin
  • Características:
    • Sidebar fijo con navegación
    • Top bar con usuario y notificaciones
    • Contenido principal con scroll
    • Menú dinámico según rol
    • Outlet para rutas hijas

Flujos de Navegación

Flujo de Autenticación

Usuario no autenticado
    │
    ├─► /dashboard → redirect → /auth/login
    │
    └─► /auth/login → login exitoso → /dashboard

Flujo de Onboarding

Nuevo usuario (post-registro)
    │
    └─► /onboarding
        │
        ├─ Step 1: CompanyStep (info empresa)
        ├─ Step 2: PlanStep (selección plan)
        ├─ Step 3: InviteStep (invitar usuarios)
        └─ Step 4: CompleteStep → /dashboard

Flujo de Superadmin

Usuario con role=superadmin
    │
    ├─► /dashboard/* → acceso normal
    │
    └─► /superadmin/* → acceso permitido
            │
            └─ /superadmin/tenants/:id → detalle tenant

Parámetros Dinámicos

Ruta Parámetro Tipo Descripción
/dashboard/sales/leads/:id id string (UUID) ID del lead
/dashboard/sales/opportunities/:id id string (UUID) ID de la oportunidad
/superadmin/tenants/:id id string (UUID) ID del tenant

Uso en Componentes

import { useParams } from 'react-router-dom';

function LeadDetailPage() {
  const { id } = useParams<{ id: string }>();
  // id contiene el UUID del lead
}

Estado de Autenticación

Store: auth.store.ts

interface User {
  id: string;
  email: string;
  first_name: string;
  last_name: string;
  role: string;        // 'user' | 'admin' | 'superadmin'
  tenant_id: string;
}

interface AuthState {
  user: User | null;
  accessToken: string | null;
  refreshToken: string | null;
  isAuthenticated: boolean;
  isLoading: boolean;
}

Resumen de Rutas

Portal Cantidad Guard
Auth 3 rutas GuestRoute
Dashboard Core 10 rutas ProtectedRoute
Dashboard Sales 6 rutas ProtectedRoute
Dashboard Commissions 5 rutas ProtectedRoute
Superadmin 3 rutas SuperadminRoute
Onboarding 1 ruta ProtectedRoute
Total 28 rutas -

Documentación generada - Template SaaS v1.0.0