04 - Mermaid do fluxo completo da aplicação
Fluxo do usuário acessando '/docs/[...slug]'
flowchart LR
subgraph Browser["Navegador do usuário"]
U[Usuário acessa /docs/alguma/pagina]
end
subgraph Next["Next.js 16 (Server)"]
A[Route handler /docs/[...slug]/page.tsx]
L[Verifica sessão com supabaseServer.auth.getUser()]
Q[SELECT em app_docs (via Supabase Client)]
D[Baixa markdown do Storage via supabaseAdmin]
R[Renderiza markdown em HTML e devolve resposta]
end
subgraph Supabase["Supabase"]
subgraph Auth["Supabase Auth"]
AU[(auth.users)]
end
subgraph DB["Postgres + RLS"]
G[(app_groups)]
GU[(app_group_users)]
F[(app_group_folders)]
DOC[(app_docs)]
GD[(app_group_docs)]
end
subgraph Storage["Supabase Storage"]
B[(Bucket 'docs')]
end
end
U --> A
A --> L
L -->|sem user| R1[redirect /login]
L -->|user ok| Q
Q -->|com JWT do usuário| DOC
DOC -->|RLS verifica grupos/pastas\nusando app_group_users, app_group_folders, app_group_docs| DOC_FOUND{Doc encontrado\np/esse usuário?}
DOC_FOUND -->|não| NF[404 / Sem permissão]
DOC_FOUND -->|sim| D
D --> B
B --> D
D --> R
R --> UFluxo de administração (painéis '/admin')
flowchart LR
subgraph AdminBrowser["Navegador (Admin)"]
A1[Admin acessa /admin/groups ou /admin/docs]
end
subgraph AdminNext["Next.js 16 (Server)"]
P[Page /admin/* verifica email do admin]
SA[Server Action: inserir/atualizar\napp_group_folders / app_group_docs]
end
subgraph AdminSupabase["Supabase"]
DB[(Postgres)]
end
A1 --> P
P -->|supabaseServer.auth.getUser()| PCHK{Email permitidos?}
PCHK -->|não| REDIR[redirect /]
PCHK -->|sim| SA
SA -->|supabaseAdmin (service_role)| DB
DB --> SA