Uma aplicação completa construída com Turborepo, incluindo API Fastify, aplicações Next.js e infraestrutura como código usando Terraform e Kubernetes.
g3developer/
├── apps/
│ ├── api/ # API REST com Fastify + Prisma
│ ├── application/ # Admin dashboard (Next.js)
│ ├── web/ # Site público (Next.js)
│ └── infra/ # Terraform + Helm charts
├── packages/
│ ├── ui/ # Design system compartilhado
│ ├── permissions/ # Sistema de permissões
│ └── env/ # Validação de environment
└── docs/ # Documentação
# Clone e instale dependências
git clone <repo-url>
cd g3developer
pnpm install
# Configure environment
cp .env.development.example .env.local
# Inicie o banco de dados
docker-compose up -d postgres
# Execute migrações
pnpm --filter ./apps/api prisma migrate dev
# Inicie todos os serviços
pnpm dev# Configure credenciais da Digital Ocean
export DIGITALOCEAN_ACCESS_TOKEN=your_token_here
# Execute o script de setup
./scripts/setup-infrastructure.sh
# Ou configure manualmente seguindo a documentação- Fastify - Framework web rápido e eficiente
- Prisma - ORM moderno para TypeScript
- PostgreSQL - Banco de dados relacional
- TypeScript - Type safety
- Next.js 14 - Framework React com App Router
- TailwindCSS - Utility-first CSS framework
- Shadcn/ui - Componentes de UI reutilizáveis
- TypeScript - Type safety
- Turborepo - Monorepo com build system otimizado
- Docker - Containerização
- Kubernetes - Orquestração de containers
- Helm - Gerenciamento de aplicações K8s
- Terraform - Infrastructure as Code
- GitHub Actions - CI/CD
- Digital Ocean - Cloud provider
- API: http://localhost:3001
- Admin: http://localhost:3000
- Site: http://localhost:3002
- Storybook: http://localhost:6006
- API: https://api-staging.g3developer.com
- Admin: https://app-staging.g3developer.com
- Site: https://staging.g3developer.com
- API: https://api.g3developer.com
- Admin: https://app.g3developer.com
- Site: https://g3developer.com
packages/env— validador e helpers para variáveis de ambiente (client/server).packages/permissions— sistema de permissões (define abilities, helpers para Fastify e React provider para RBAC no cliente).packages/ui— biblioteca de componentes UI e estilos (Tailwind, componentes Radix/unstyled customizados e Storybook).
pnpm install— instalar dependências no workspacepnpm build— rodaturbo run buildpara construir todos os pacotes/appspnpm dev— rodaturbo run dev(dev servers das apps que expõemdev)pnpm lint—turbo run lint
Exemplos úteis:
# Instalar e rodar tudo em dev (monorepo)
pnpm install
pnpm dev
# Ou rodar uma app específica (ex.: api)
pnpm --filter @g3developer/api dev
# Rodar build apenas para web
pnpm --filter web buildapps/apidepende de um Postgres (scriptsdb:up/db:downemapps/api/package.json) e usa Prisma (migrations + seed).postinstallnoapps/apiexecutaprisma generatepara garantir que o Prisma Client esteja disponível.- Os pacotes internos (
env,permissions,ui) são referenciados viaworkspace:*e devem ser construídos/gerados conforme necessário pelo fluxo do Turbo.
- Adicionar um README por app (já existem READMEs em
apps/api,apps/application,apps/web) com exemplos de requests e fluxos típicos. - Habilitar storybook e documentação dos componentes (
packages/ui) para facilitar reutilização por outros desenvolvedores. - Configurar pipelines CI para rodar
pnpm -w -r testepnpm -w -r buildcom cache do Turbo.
Se quiser, eu posso gerar um README detalhado por package automaticamente (listar exports principais dos pacotes packages/*) ou adicionar exemplos curl para os endpoints mais importantes do apps/api.