Skip to content

Repository files navigation

Fullstack Starter

GitHub Repo starsLast CommitVersionAsk DeepWiki

English | 한국어 | 简体中文 | 日本語 | Português

Template versioning via Release Please — see CHANGELOG.md for release history.

Production-ready fullstack monorepo template with Next.js 16, FastAPI, Flutter, and GCP infrastructure.

3-Tier Architecture

graph TB
subgraph Client
Web[Next.js 16<br/>React 19]
Mobile[Flutter 3.44.8<br/>Riverpod]
end
subgraph GCP["GCP Cloud Run"]
API[FastAPI<br/>Python 3.12]
Worker[Worker<br/>CloudTasks]
end
subgraph Data
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
Loading

Key Features

  • Modern Stack: Next.js 16 + React 19, FastAPI, Flutter 3.44.8, TailwindCSS v4
  • Type Safety: Full type support with TypeScript, Pydantic, and Dart
  • Authentication: OAuth with better-auth (Google, GitHub, Facebook)
  • Internationalization: next-intl (web), Flutter ARB (mobile), shared i18n package
  • Auto-generated API Clients: Orval (web), swagger_parser (mobile)
  • Infrastructure as Code: Terraform + GCP (Cloud Run, Cloud SQL, Cloud Storage)
  • CI/CD: GitHub Actions + Workload Identity Federation (keyless deployment)
  • AI Agent Support: Guidelines for AI coding agents (Gemini, Claude, etc.)
  • mise Monorepo: mise-based task management and unified tool versions

Tech Stack

LayerTechnology
FrontendNext.js 16, React 19, TailwindCSS v4, shadcn/ui, TanStack Query, Jotai
BackendFastAPI, SQLAlchemy (async), PostgreSQL 16, Redis 7
MobileFlutter 3.44.8, Riverpod 3, go_router 17, Firebase Crashlytics, Fastlane
WorkerFastAPI + CloudTasks/PubSub
InfrastructureTerraform, GCP (Cloud Run, Cloud SQL, Cloud Storage, CDN)
CI/CDGitHub Actions, Workload Identity Federation
Tool Managementmise (unified Node, Python, Flutter, Terraform versions)

Why this tech stack? — Detailed reasoning behind each technology choice.

Fullstack

AI Agent Orchestration

This template includes a multi-agent coordination workflow for complex cross-domain tasks.

graph TB
subgraph Coordination["Coordination Layer"]
User([User Request])
PM[PM Agent<br/>Task Decomposition]
end
subgraph Execution["Parallel Execution"]
FE[Frontend Agent<br/>Next.js/Flutter]
BE[Backend Agent<br/>FastAPI]
Infra[Infra Agent<br/>Terraform]
end
subgraph Review["Quality Assurance"]
QA[QA Agent<br/>Security/A11y/Perf]
end
User --> PM
PM --> FE & BE & Infra
FE & BE & Infra --> QA
QA -->|Issues Found| FE & BE & Infra
QA -->|Approved| Done([Complete])
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
Loading
AgentRole
PM AgentAnalyzes requirements, defines API contracts, creates prioritized task breakdown
Domain AgentsFrontend, Backend, Mobile, Infra agents execute tasks in parallel by priority
QA AgentReviews security (OWASP), performance, accessibility (WCAG 2.1 AA)

See .agents/workflows/work.md for the full orchestration workflow.

Quick Start

Choose one of the following methods to start with this template:

# Create from CLI
bun create fullstack-starter my-app
# or
npm create fullstack-starter my-app

Or use GitHub:

  1. Click Use this template to create a new repository
  2. Or Fork this repository

Prerequisites

Required for all platforms:

For mobile development (iOS/Android):

Optional:

1. Install Runtimes

# Install mise (if not installed)
curl https://mise.run | sh
# Trust project config (required on first clone)
mise trust
# Install all runtimes (Node 24, Python 3.12, Flutter 3, bun, uv, Terraform)
mise install

2. Install Dependencies

# Install all dependencies at once
mise run install

3. Start Local Infrastructure

mise infra:up

This starts:

  • PostgreSQL (5432)
  • Redis (6379)
  • MinIO (9000, 9001)

4. Run Database Migrations

mise db:migrate

5. Start Development Servers

# Start API and Web services (recommended for web development)
mise dev:web
# Start API and Mobile services (recommended for mobile development)
mise dev:mobile
# Or start all services
mise dev

Project Structure

fullstack-starter/
├── apps/
│ ├── api/ # FastAPI backend
│ ├── web/ # Next.js frontend
│ ├── worker/ # Background worker
│ ├── mobile/ # Flutter mobile app
│ └── infra/ # Terraform infrastructure
├── packages/
│ ├── design-tokens/ # Shared design tokens (Source of Truth)
│ └── i18n/ # Shared i18n package (Source of Truth)
├── .agents/rules/ # AI agent guidelines
├── .serena/ # Serena MCP config
└── .github/workflows/ # CI/CD

Commands

mise Monorepo Tasks

This project uses mise monorepo mode with //path:task syntax.

# List all available tasks
mise tasks --all
CommandDescription
mise db:migrateRun database migrations
mise devStart all services
mise dev:webStart API and Web services
mise dev:mobileStart API and Mobile services
mise formatFormat all apps
mise gen:apiGenerate OpenAPI schema and API clients
mise i18n:buildBuild i18n files
mise infra:downStop local infrastructure
mise infra:upStart local infrastructure
mise lintLint all apps
mise run installInstall all dependencies
mise testTest all apps
mise tokens:buildBuild design tokens
mise typecheckType check

App-specific Tasks

API (apps/api)
CommandDescription
mise //apps/api:installInstall dependencies
mise //apps/api:devStart development server
mise //apps/api:testRun tests
mise //apps/api:lintRun linter
mise //apps/api:formatFormat code
mise //apps/api:typecheckType check
mise //apps/api:migrateRun migrations
mise //apps/api:migrate:createCreate new migration
mise //apps/api:gen:openapiGenerate OpenAPI schema
mise //apps/api:infra:upStart local infrastructure
mise //apps/api:infra:downStop local infrastructure
Web (apps/web)
CommandDescription
mise //apps/web:installInstall dependencies
mise //apps/web:devStart development server
mise //apps/web:buildProduction build
mise //apps/web:testRun tests
mise //apps/web:lintRun linter
mise //apps/web:formatFormat code
mise //apps/web:typecheckType check
mise //apps/web:gen:apiGenerate API client
Mobile (apps/mobile)
CommandDescription
mise //apps/mobile:installInstall dependencies
mise //apps/mobile:devRun on device/simulator
mise //apps/mobile:buildBuild
mise //apps/mobile:testRun tests
mise //apps/mobile:lintRun analyzer
mise //apps/mobile:formatFormat code
mise //apps/mobile:gen:l10nGenerate localizations
mise //apps/mobile:gen:apiGenerate API client
Worker (apps/worker)
CommandDescription
mise //apps/worker:installInstall dependencies
mise //apps/worker:devStart worker
mise //apps/worker:testRun tests
mise //apps/worker:lintRun linter
mise //apps/worker:formatFormat code
Infrastructure (apps/infra/gcp, apps/infra/aws)
CommandDescription
mise //apps/infra/gcp:initInitialize Terraform
mise //apps/infra/gcp:planPreview changes
mise //apps/infra/gcp:applyApply changes
mise //apps/infra/gcp:plan:prodPreview production
mise //apps/infra/gcp:apply:prodApply production
i18n (packages/i18n)
CommandDescription
mise //packages/i18n:installInstall dependencies
mise //packages/i18n:buildBuild i18n files for web and mobile
mise //packages/i18n:build:webBuild for web only
mise //packages/i18n:build:mobileBuild for mobile only
Design Tokens (packages/design-tokens)
CommandDescription
mise //packages/design-tokens:installInstall dependencies
mise //packages/design-tokens:buildBuild tokens for web and mobile
mise //packages/design-tokens:devWatch mode for development
mise //packages/design-tokens:testRun tests

Internationalization (i18n)

packages/i18n is the Single Source of Truth for i18n resources.

# Edit i18n files
packages/i18n/src/en.arb # English (default)
packages/i18n/src/ko.arb # Korean
packages/i18n/src/ja.arb # Japanese# Build and deploy to each app
mise i18n:build
# Generated files:# - apps/web/src/config/messages/*.json (Nested JSON)# - apps/mobile/lib/i18n/messages/app_*.arb (Flutter ARB)

Design Tokens

packages/design-tokens is the Single Source of Truth for design tokens (colors, spacing, etc.).

# Edit tokens
packages/design-tokens/src/tokens.ts
# Build and distribute
mise tokens:build
# Generated files:# - apps/web/src/app/[locale]/tokens.css (CSS variables)# - apps/mobile/lib/core/theme/generated_theme.dart (Flutter Theme)

Configuration

Environment Variables

Copy example files and configure:

# API
cp apps/api/.env.example apps/api/.env
# Web
cp apps/web/.env.example apps/web/.env
# Infra
cp apps/infra/gcp/terraform.tfvars.example apps/infra/gcp/terraform.tfvars

GitHub Actions Secrets

Set these secrets in your repository:

SecretDescription
GCP_PROJECT_IDGCP project ID
GCP_REGIONGCP region (e.g., asia-northeast3)
WORKLOAD_IDENTITY_PROVIDERFrom Terraform output
GCP_SERVICE_ACCOUNTFrom Terraform output
FIREBASE_SERVICE_ACCOUNT_JSONFirebase service account JSON (for mobile deployment)
FIREBASE_ANDROID_APP_IDFirebase Android app ID

Firebase (Mobile)

  1. Install FlutterFire CLI:
dart pub global activate flutterfire_cli
  1. Configure Firebase for your project:
cd apps/mobile
flutterfire configure

This generates lib/firebase_options.dart with your Firebase configuration.

Deployment

GitHub Actions (Recommended)

Push to main branch triggers automatic deployment:

  • apps/api/ changes → Deploy API
  • apps/web/ changes → Deploy Web
  • apps/worker/ changes → Deploy Worker
  • apps/mobile/ changes → Build & Deploy to Firebase App Distribution

Manual Deployment

# Build and push Docker imagescd apps/api
docker build -t gcr.io/PROJECT_ID/api .
docker push gcr.io/PROJECT_ID/api
# Deploy to Cloud Run
gcloud run deploy api --image gcr.io/PROJECT_ID/api --region REGION

Mobile (Fastlane)

The mobile app uses Fastlane for build automation and deployment.

cd apps/mobile
# Install Ruby dependencies
bundle install
# Available lanes
bundle exec fastlane android build # Build APK
bundle exec fastlane android firebase # Deploy to Firebase App Distribution
bundle exec fastlane android internal # Deploy to Play Store (internal)
bundle exec fastlane ios build # Build iOS (no codesign)
bundle exec fastlane ios testflight_deploy # Deploy to TestFlight

AI Agent Support

This template is designed to work with AI coding agents (Gemini, Claude, etc.).

  • .agents/rules/ - Guidelines for AI agents
  • .serena/ - Serena MCP configuration

Try oh-my-agent to maximize productivity with AI coding agents.

Documentation

License

MIT

Sponsors

If this project helped you, please consider buying me a coffee!

Buy Me A Coffee

Or leave a star:

gh api --method PUT /user/starred/first-fluke/fullstack-starter

Star History

Star History Chart

About

Production-ready fullstack monorepo template with Next.js, FastAPI, Flutter, Terraform, and mise

Topics

Resources

Stars

219 stars

Watchers

2 watching

Forks

Releases

Sponsor this project

Packages

Contributors

Languages