Docs

01 — Arquitetura e Stack

Princípio

Lógica de negócio pesada no service; UIs separadas por audiência; conteúdo público no website; persistência via PostgreSQL + Hasura; cache Redis quando aplicável.

Apps (boilerplate)

AppStackAudiênciaDomínio prod
apps/serviceNestJSAPI RESTservice.framework.forestbit.io
apps/appReact + Vite + TanStack Router + ApolloCliente finalapp.framework.forestbit.io
apps/backofficeReact + Vite + TanStack Router + ApolloAdmin internobackoffice.framework.forestbit.io
apps/websiteNext.jsMarketing / SEOframework.forestbit.io
apps/hasuraHasura + PostgreSQLGraphQL / permissionsapi.framework.forestbit.io
apps/pgbouncerPgBouncerPool de conexões(infra Docker)

O que cada app inclui (features shipped): README raiz.

Stack

CamadaTecnologia
FrontendReact, Vite, Tailwind, shadcn/ui, TanStack Router
BackendNestJS (REST API)
DBPostgreSQL + PgBouncer (pool)
GraphQLHasura
CacheRedis
InfraDocker Compose, Dokploy

Fluxo de dados

Browser (app/website)
    → service (REST/API)
    → Hasura → PgBouncer → PostgreSQL
    → Redis (cache, jobs)
    → Integrações externas (Stripe, email, APIs de terceiros, …)

Connection pooling (PgBouncer)

GraphQL subscriptions e picos de API abrem muitas conexões no Hasura. PgBouncer na porta 6432 multiplexa clientes em um pool menor de conexões reais no Postgres (porta 5432 local; 5439 em prod para admin/migrations).

  • Config: apps/pgbouncer/
  • Hasura: HASURA_GRAPHQL_DATABASE_URL → pgbouncer:6432
  • Pool mode: transaction (use_prepared_statements: false na metadata)

Onde documentar o quê

AssuntoDocumento
Módulos, regras de negócio, fluxos, statusproduct/04-features-modules.md
Endpoints REST, Hasura, webhooks, integrações04-api-integrations
Identidade, tema, logos, domínios (@framework/brand)10-brand-kit
Status shipped do template (gates)00-boilerplate-status
Specs técnicas por featurespecs/NNN-nome/

Fronteiras importantes

  • Não duplicar regras de negócio críticas no frontend — service é source of truth
  • Hasura: permissões e queries; regras complexas no service
  • Help docs (apps/app/public/docs/): conteúdo para cliente, não arquitetura

Decisões arquiteturais (ADR index)

ADRTítuloStatus
—Monorepo pnpmAdotado
—Spec Kit para featuresAdotado

Registrar ADRs novos em docs/development/adr/ quando necessário.

Links relacionados