Docs
01 — Arquitetura e Stack
Visão de alto nível do monorepo. Oferta do produto: ../empresa/. APIs: 04-api-integrations.
Princípio
Lógica de negócio no service; UIs por audiência; conteúdo público no website; persistência via PostgreSQL + Hasura; Redis para estado volátil.
Apps
| App | Stack | Audiência | Domínio prod |
|---|---|---|---|
apps/service | NestJS | API REST | service.vectorgen.ai |
apps/app | React + Vite + TanStack Router + Apollo | Cliente | app.vectorgen.ai |
apps/backoffice | React + Vite + TanStack Router + Apollo | Admin interno | backoffice.vectorgen.ai |
apps/website | Next.js | Landing / SEO | vectorgen.ai |
apps/hasura | Hasura + PostgreSQL | GraphQL / permissions | api.vectorgen.ai |
apps/pgbouncer | PgBouncer | Pool de conexões | (infra Docker) |
Stack
| Camada | Tecnologia |
|---|---|
| Frontend | React, Vite, Tailwind, shadcn/ui, TanStack Router |
| Backend | NestJS (REST API) |
| DB | PostgreSQL + PgBouncer |
| GraphQL | Hasura |
| Cache | Redis |
| Infra | Docker Compose, Dokploy |
Fluxo de dados
Browser (app | backoffice | website)
→ service (REST)
→ Hasura → PgBouncer → PostgreSQL
→ Redis (TTL)
→ Integrações externas
Hasura usa PgBouncer na porta 6432 (transaction mode; use_prepared_statements: false). Postgres admin/migrations: 5432 local, 5439 em prod.
Backoffice não tem backend próprio: SPA + auth client=backoffice + endpoints /admin/* no mesmo apps/service.
Fronteiras
- Regras de negócio críticas no service, não só no client
- Hasura: permissions e queries; regras complexas no service
- Help docs in-app:
apps/app/public/docs/