/App Router

API Reference

App Router

O Next.js App Router organiza as rotas pelo sistema de arquivos. O Refstash usa route groups — pastas entre parênteses que agrupam rotas sem afetar a URL — para separar contextos distintos da aplicação.

app/
(auth)/rotas públicas de autenticação
login/page.tsx
register/page.tsx
(landing)/página inicial pública
layout.tsx
page.tsx
(onboarding)/fluxo de criação de workspace
workspace/new/page.tsx
(docs)/documentação — páginas MDX
layout.tsx
docs/páginas .mdx da documentação
[workspaceSlug]/app principal — requer autenticação
layout.tsxsidebar, header, chat panel
page.tsxdashboard do workspace
categories/page.tsx
collections/page.tsx
collections/[id]/page.tsx
notes/page.tsx
notes/[id]/page.tsxeditor Tiptap
settings/page.tsx
settings/members/page.tsx
settings/ai/page.tsx
invite/[id]/page.tsxaceitar convite de workspace
api/rotas de API REST
auth/[...all]/route.tsBetter Auth handler
categories/route.ts + [id]/route.ts
collection/route.ts + [id]/route.ts
notes/route.ts + [id]/route.ts
resources/route.ts + [id]/route.ts
ai/chat + models + settings
upload/notes + workspace-logo
collab/token/route.ts
fetchMetadata/route.ts
storage/[...path]/route.ts
docs/content/route.ts
workspace/route.ts
layout.tsxproviders globais (Query, Theme, Toast)

Route groups

Os parênteses na pasta criam um grupo sem impactar a URL. /login é acessível em /login, não em /(auth)/login.

Isso serve para compartilhar layouts entre rotas sem criar segmentos de URL extras. Por exemplo, todas as rotas dentro de [workspaceSlug]/ compartilham o mesmo layout com sidebar e header.

[workspaceSlug]

Segmento dinâmico — o slug do workspace ativo aparece na URL (/meu-workspace/notes). O layout desse grupo valida a sessão e carrega o contexto do workspace. Rotas fora desse grupo (como /login) são públicas.

api/

Serverless API routes. Cada route.ts exporta handlers HTTP (GET, POST, PATCH, DELETE). Todas as rotas de negócio usam requireWorkspaceAccess() do src/server/ para validar a sessão antes de processar a requisição.