Fullstack Starter

June 10, 2026 · View on GitHub

GitHub Repo stars Last Commit Version Ask 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.41.2<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

Key Features

  • Modern Stack: Next.js 16 + React 19, FastAPI, Flutter 3.41.2, 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.41.2, 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
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):

  • Xcode - Includes iOS Simulator (macOS only)
  • Android Studio - Includes Android SDK and emulator

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

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 images
cd 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