src/app/
Entrada do aplicativo, rotas e layout raiz.
- src/routes/
- src/routes/__root.tsx
- src/router.tsx
- src/start.ts
TanStack Start usa roteamento por arquivo em src/routes; é o equivalente direto de app/.
YOUbot
Onde vive cada peça do YOUbot
A organização abaixo segue a estrutura proposta. Como o app roda em TanStack Start, o backend usa server functions em vez de supabase/functions — a intenção de cada função foi preservada e o equivalente real está indicado.
Implementado
17
Parcial
9
Planejado
0
src/
routes/ (app/ — rotas e telas)
components/
lib/
<feature>/ (features/)
ai/ documents/ reminders/ (services/)
integrations/
orchestrator/
hooks/
types/ (co-localizado: lib/<feature>/types.ts)server functions (TanStack Start) lib/orchestrator/orchestrator.functions.ts → assistant lib/calendar/service.ts → calendar-sync lib/reminders/engine.ts + jobs/scheduler.ts → notifications lib/documents/service.ts → document-generation lib/messaging/service.ts → whatsapp lib/briefing/service.ts → daily-briefing
Camada de experiência: rotas, shell e design system
Entrada do aplicativo, rotas e layout raiz.
TanStack Start usa roteamento por arquivo em src/routes; é o equivalente direto de app/.
Componentes compartilhados e primitivas de UI.
Hooks reutilizáveis (sessão, viewport).
Tipos de domínio.
Tipos ficam junto do domínio, não em uma pasta global — menos import cruzado.
Sufixos de borda
*.functions.ts expõe RPC tipado ao app; *.server.ts guarda o que nunca pode ir ao navegador. Telas importam só o primeiro.
Domínio não conhece fornecedor
Serviços falam com portas (CalendarProvider, WhatsAppProvider…). Trocar de fornecedor mexe só no registro.
IA interpreta, backend autoriza
Nenhuma escrita nasce no cliente: plano, política e execução ficam no servidor, com auditoria.
Tipos junto do domínio
Cada feature carrega types.ts, store e regras — mover a pasta move o módulo inteiro.