English | 한국어 | 简体中文 | 日本語 | Português
O versionamento do template é gerenciado via Release Please — consulte o CHANGELOG.md para o histórico de releases.
Template monorepo fullstack pronto para produção com Next.js 16, FastAPI, Flutter e infraestrutura GCP.
graph TB
subgraph Client["Cliente"]
Web[Next.js 16<br/>React 19]
Mobile[Flutter 3.41.2<br/>Riverpod]
end
subgraph GCP["GCP Cloud Run"]
API[FastAPI<br/>Python 3.12]
Worker[Worker<br/>CloudTasks]
end
subgraph Data["Camada de Dados"]
DB[(PostgreSQL 16)]
Cache[(Redis 7)]
Storage[(Cloud Storage)]
end
Web --> API
Mobile --> API
API --> DB
API --> Cache
API --> Worker
Worker --> DB
API --> Storage
style Web fill:#0070f3,color:#fff
style Mobile fill:#02569B,color:#fff
style API fill:#009688,color:#fff
style Worker fill:#009688,color:#fff
style DB fill:#336791,color:#fff
style Cache fill:#DC382D,color:#fff
style Storage fill:#4285F4,color:#fff
- Stack Moderno: Next.js 16 + React 19, FastAPI, Flutter 3.41.2, TailwindCSS v4
- Segurança de Tipos: Suporte completo de tipos com TypeScript, Pydantic e Dart
- Autenticação: OAuth com better-auth (Google, GitHub, Facebook)
- Internacionalização (i18n): next-intl (web), Flutter ARB (mobile), pacote i18n compartilhado
- Clientes API Auto-gerados: Orval (web), swagger_parser (mobile)
- Infraestrutura como Código: Terraform + GCP (Cloud Run, Cloud SQL, Cloud Storage)
- CI/CD: GitHub Actions + Workload Identity Federation (deploy sem chaves)
- Suporte a Agentes de IA: Diretrizes para agentes de codificação de IA (Gemini, Claude, etc.)
- Monorepo com mise: Gerenciamento de tarefas baseado em mise e versões unificadas de ferramentas
| Camada | Tecnologia |
|---|---|
| Frontend | Next.js 16, React 19, TailwindCSS v4, shadcn/ui, TanStack Query, Jotai |
| Backend | FastAPI, SQLAlchemy (async), PostgreSQL 16, Redis 7 |
| Mobile | Flutter 3.41.2, Riverpod 3, go_router 17, Firebase Crashlytics, Fastlane |
| Worker | FastAPI + CloudTasks/PubSub |
| Infraestrutura | Terraform, GCP (Cloud Run, Cloud SQL, Cloud Storage, CDN) |
| CI/CD | GitHub Actions, Workload Identity Federation |
| Gerenciamento de Ferramentas | mise (versões unificadas de Node, Python, Flutter, Terraform) |
Por que esta stack tecnológica? — Explicação detalhada por trás de cada escolha tecnológica.
Este template inclui um fluxo de trabalho de coordenação multi-agente para tarefas complexas entre domínios.
graph TB
subgraph Coordination["Camada de Coordenação"]
User([Requisição do Usuário])
PM[Agente PM<br/>Decomposição de Tarefas]
end
subgraph Execution["Execução Paralela"]
FE[Agente Frontend<br/>Next.js/Flutter]
BE[Agente Backend<br/>FastAPI]
Infra[Agente Infra<br/>Terraform]
end
subgraph Review["Garantia de Qualidade"]
QA[Agente QA<br/>Segurança/Acessibilidade/Performance]
end
User --> PM
PM --> FE & BE & Infra
FE & BE & Infra --> QA
QA -->|Problemas Encontrados| FE & BE & Infra
QA -->|Aprovado| Done([Concluído])
style PM fill:#8B5CF6,color:#fff
style FE fill:#0070f3,color:#fff
style BE fill:#009688,color:#fff
style Infra fill:#F59E0B,color:#fff
style QA fill:#EF4444,color:#fff
| Agente | Função |
|---|---|
| Agente PM | Analisa requisitos, define contratos de API, cria decomposição de tarefas priorizada |
| Agentes de Domínio | Agentes Frontend, Backend, Mobile, Infra executam tarefas em paralelo por prioridade |
| Agente QA | Revisa segurança (OWASP), performance, acessibilidade (WCAG 2.1 AA) |
Consulte
.agents/workflows/work.mdpara o fluxo de orquestração completo.
Escolha um dos métodos a seguir para começar com este template:
# Criar via CLI
bun create fullstack-starter my-app
# ou
npm create fullstack-starter my-appOu use o GitHub:
- Clique em Use this template para criar um novo repositório
- Ou Fork este repositório
Obrigatório para todas as plataformas:
- mise - Gerenciador de versões de runtime
- Docker ou Podman Desktop - Infraestrutura local
Para desenvolvimento mobile (iOS/Android):
- Xcode - Inclui iOS Simulator (apenas macOS)
- Android Studio - Inclui Android SDK e emulador
Opcional:
- Terraform - Infraestrutura em nuvem
# Instalar mise (se não estiver instalado)
curl https://mise.run | sh
# Confiar na configuração do projeto (necessário no primeiro clone)
mise trust
# Instalar todos os runtimes (Node 24, Python 3.12, Flutter 3, bun, uv, Terraform)
mise install# Instalar todas as dependências de uma vez
mise run installmise infra:upIsso inicia:
- PostgreSQL (5432)
- Redis (6379)
- MinIO (9000, 9001)
mise db:migrate# Iniciar serviços de API e Web (recomendado para desenvolvimento web)
mise dev:web
# Iniciar serviços de API e Mobile (recomendado para desenvolvimento mobile)
mise dev:mobile
# Ou iniciar todos os serviços
mise devfullstack-starter/
├── apps/
│ ├── api/ # Backend FastAPI
│ ├── web/ # Frontend Next.js
│ ├── worker/ # Worker em segundo plano
│ ├── mobile/ # App mobile Flutter
│ └── infra/ # Infraestrutura Terraform
├── packages/
│ ├── design-tokens/ # Design tokens compartilhados (Fonte da Verdade)
│ └── i18n/ # Pacote i18n compartilhado (Fonte da Verdade)
├── .agents/rules/ # Diretrizes para agentes de IA
├── .serena/ # Configuração Serena MCP
└── .github/workflows/ # CI/CDEste projeto usa o modo monorepo do mise com sintaxe //path:task.
# Listar todas as tarefas disponíveis
mise tasks --all| Comando | Descrição |
|---|---|
mise db:migrate |
Executar migrações do banco de dados |
mise dev |
Iniciar todos os serviços |
mise dev:web |
Iniciar serviços de API e Web |
mise dev:mobile |
Iniciar serviços de API e Mobile |
mise format |
Formatar todos os apps |
mise gen:api |
Gerar schema OpenAPI e clientes API |
mise i18n:build |
Compilar arquivos i18n |
mise infra:down |
Parar infraestrutura local |
mise infra:up |
Iniciar infraestrutura local |
mise lint |
Executar lint em todos os apps |
mise run install |
Instalar todas as dependências |
mise test |
Testar todos os apps |
mise tokens:build |
Compilar design tokens |
mise typecheck |
Verificação de tipos |
API (apps/api)
| Comando | Descrição |
|---|---|
mise //apps/api:install |
Instalar dependências |
mise //apps/api:dev |
Iniciar servidor de desenvolvimento |
mise //apps/api:test |
Executar testes |
mise //apps/api:lint |
Executar linter |
mise //apps/api:format |
Formatar código |
mise //apps/api:typecheck |
Verificação de tipos |
mise //apps/api:migrate |
Executar migrações |
mise //apps/api:migrate:create |
Criar nova migração |
mise //apps/api:gen:openapi |
Gerar schema OpenAPI |
mise //apps/api:infra:up |
Iniciar infraestrutura local |
mise //apps/api:infra:down |
Parar infraestrutura local |
Web (apps/web)
| Comando | Descrição |
|---|---|
mise //apps/web:install |
Instalar dependências |
mise //apps/web:dev |
Iniciar servidor de desenvolvimento |
mise //apps/web:build |
Build de produção |
mise //apps/web:test |
Executar testes |
mise //apps/web:lint |
Executar linter |
mise //apps/web:format |
Formatar código |
mise //apps/web:typecheck |
Verificação de tipos |
mise //apps/web:gen:api |
Gerar cliente API |
Mobile (apps/mobile)
| Comando | Descrição |
|---|---|
mise //apps/mobile:install |
Instalar dependências |
mise //apps/mobile:dev |
Executar em dispositivo/emulador |
mise //apps/mobile:build |
Compilar |
mise //apps/mobile:test |
Executar testes |
mise //apps/mobile:lint |
Executar analyzer |
mise //apps/mobile:format |
Formatar código |
mise //apps/mobile:gen:l10n |
Gerar localizações |
mise //apps/mobile:gen:api |
Gerar cliente API |
Worker (apps/worker)
| Comando | Descrição |
|---|---|
mise //apps/worker:install |
Instalar dependências |
mise //apps/worker:dev |
Iniciar worker |
mise //apps/worker:test |
Executar testes |
mise //apps/worker:lint |
Executar linter |
mise //apps/worker:format |
Formatar código |
Infraestrutura (apps/infra)
| Comando | Descrição |
|---|---|
mise //apps/infra:init |
Inicializar Terraform |
mise //apps/infra:plan |
Visualizar alterações |
mise //apps/infra:apply |
Aplicar alterações |
mise //apps/infra:plan:prod |
Visualizar produção |
mise //apps/infra:apply:prod |
Aplicar produção |
i18n (packages/i18n)
| Comando | Descrição |
|---|---|
mise //packages/i18n:install |
Instalar dependências |
mise //packages/i18n:build |
Compilar arquivos i18n para web e mobile |
mise //packages/i18n:build:web |
Compilar apenas para web |
mise //packages/i18n:build:mobile |
Compilar apenas para mobile |
Design Tokens (packages/design-tokens)
| Comando | Descrição |
|---|---|
mise //packages/design-tokens:install |
Instalar dependências |
mise //packages/design-tokens:build |
Compilar tokens para web e mobile |
mise //packages/design-tokens:dev |
Modo watch para desenvolvimento |
mise //packages/design-tokens:test |
Executar testes |
O packages/i18n é a Fonte da Verdade para recursos i18n.
# Editar arquivos i18n
packages/i18n/src/en.arb # Inglês (padrão)
packages/i18n/src/ko.arb # Coreano
packages/i18n/src/ja.arb # Japonês
packages/i18n/src/pt.arb # Português
# Compilar e implantar em cada app
mise i18n:build
# Arquivos gerados:
# - apps/web/src/config/messages/*.json (JSON Aninhado)
# - apps/mobile/lib/i18n/messages/app_*.arb (Flutter ARB)O packages/design-tokens é a Fonte da Verdade para design tokens (cores, espaçamento, etc.).
# Editar tokens
packages/design-tokens/src/tokens.ts
# Compilar e distribuir
mise tokens:build
# Arquivos gerados:
# - apps/web/src/app/[locale]/tokens.css (Variáveis CSS)
# - apps/mobile/lib/core/theme/generated_theme.dart (Tema Flutter)Copie os arquivos de exemplo e configure:
# API
cp apps/api/.env.example apps/api/.env
# Web
cp apps/web/.env.example apps/web/.env
# Infra
cp apps/infra/terraform.tfvars.example apps/infra/terraform.tfvarsConfigure estes secrets no seu repositório:
| Secret | Descrição |
|---|---|
GCP_PROJECT_ID |
ID do projeto GCP |
GCP_REGION |
Região do GCP (ex: asia-northeast3) |
WORKLOAD_IDENTITY_PROVIDER |
Da saída do Terraform |
GCP_SERVICE_ACCOUNT |
Da saída do Terraform |
FIREBASE_SERVICE_ACCOUNT_JSON |
Conta de serviço Firebase JSON (para deploy mobile) |
FIREBASE_ANDROID_APP_ID |
ID do app Android Firebase |
- Instale o FlutterFire CLI:
dart pub global activate flutterfire_cli- Configure o Firebase para seu projeto:
cd apps/mobile
flutterfire configureIsso gera o arquivo lib/firebase_options.dart com sua configuração Firebase.
Push para a branch main aciona o deploy automático:
- Alterações em
apps/api/→ Deploy da API - Alterações em
apps/web/→ Deploy do Web - Alterações em
apps/worker/→ Deploy do Worker - Alterações em
apps/mobile/→ Build & Deploy para Firebase App Distribution
# Compilar e fazer push das imagens Docker
cd apps/api
docker build -t gcr.io/PROJECT_ID/api .
docker push gcr.io/PROJECT_ID/api
# Deploy para Cloud Run
gcloud run deploy api --image gcr.io/PROJECT_ID/api --region REGIONO app mobile usa Fastlane para automação de build e deploy.
cd apps/mobile
# Instalar dependências Ruby
bundle install
# Lanes disponíveis
bundle exec fastlane android build # Compilar APK
bundle exec fastlane android firebase # Deploy para Firebase App Distribution
bundle exec fastlane android internal # Deploy para Play Store (interno)
bundle exec fastlane ios build # Compilar iOS (sem codesign)
bundle exec fastlane ios testflight_deploy # Deploy para TestFlightEste template é projetado para trabalhar com agentes de codificação de IA (Gemini, Claude, etc.).
.agents/rules/- Diretrizes para agentes de IA.serena/- Configuração Serena MCP
Experimente oh-my-agent para maximizar a produtividade com agentes de codificação de IA.
MIT
Se este projeto te ajudou, considere me comprar um café!
Ou deixe uma estrela:
gh api --method PUT /user/starred/first-fluke/fullstack-starter
