Ir para o conteúdo

Frontend Web - Roteamento

Este documento descreve a estrutura real de roteamento do frontend.

Fonte de verdade

  • src/App.tsx
  • src/routes/index.ts
  • src/routes/publicRoutes.tsx
  • src/routes/sharedRoutes.tsx
  • src/routes/clientRoutes.tsx
  • src/routes/professionalRoutes.tsx
  • src/routes/adminRoutes.tsx

Como as rotas são aplicadas

  1. appRoutes concatena todos os grupos de rota.
  2. App.tsx aplica shell persistente com <Route element={<Layout/>}>.
  3. Quando protection está presente, a rota é envolvida por ProtectedRoute.
  4. Páginas são renderizadas dentro de Layout via <Outlet />.
  5. Cada rota usa lazy() para code splitting por feature.

Proteção de rotas

ProtectedRoute suporta:

  • autenticação obrigatória
  • requiredRole
  • requiredModule
  • regras de onboarding profissional
  • gate de onboarding obrigatório da cliente (novas contas)
  • exceções de observação para admin

Gate de onboarding da cliente

Para clientes com method_onboarding_version = 0, o acesso geral é bloqueado até concluir /health-info.

Rotas liberadas durante o bloqueio:

  • /health-info
  • rotas legais (/legal/consent, /privacy, /my-data, /data-export, /delete-account, /cookie-preferences, /consents, /lgpd/requests)
  • /courses e /courses/:id
  • /bundles e /bundles/:id
  • /professionals e /professionals/:id

Clientes legadas (method_onboarding_version = 1) não entram nesse bloqueio obrigatório.

Prefetch

src/routes/routePreload.ts aplica prefetch por:

  • perfil do usuário (admin, professional, client)
  • módulos efetivos habilitados
  • rotas compartilhadas relevantes
  • sidebar em árvore com grupos colapsáveis e persistência por perfil (localStorage);
  • hubs de navegação por domínio (/admin/marketplace, /professional/educacional, /client/aprendizado);
  • command palette global com atalho ⌘K/Ctrl+K, índice de rotas filtradas por permissão e ações rápidas.

Grupos de rota

Públicas

  • home, autenticação, design system, not found

Compartilhadas

  • onboarding, dashboard, profile, appointments, chat, notifications, legal consent e privacidade

Cliente

  • ciclos, registro diário, análise, saúde, profissionais, pagamentos, hub de aprendizado e cursos

Profissional

  • pacientes, agenda, CRM, financeiro, hub educacional e cursos

Admin

  • gestão (planos/promoções/usuários), Billings, dashboard drilldown, gestão de módulos, documentos legais e hub marketplace

Princípios de manutenção

  1. Toda nova rota deve ser registrada em um dos arquivos de src/routes/*Routes.tsx.
  2. Não adicionar lógica de autorização fora do ProtectedRoute sem necessidade explícita.
  3. Manter import lazy apontando para src/modules/**/page.
  4. Atualizar routePreload.ts quando a nova rota for crítica para experiência pós-login.

Referência de marketplace

Para rotas e módulos de permissão do domínio de cursos, consultar: