@@ -9,11 +9,12 @@ Production-ready fullstack monorepo template with Next.js 16, FastAPI, Flutter,
99- ** Modern Stack** : Next.js 16 + React 19, FastAPI, Flutter 3.32, TailwindCSS v4
1010- ** Type Safety** : Full type support with TypeScript, Pydantic, and Dart
1111- ** Authentication** : OAuth with better-auth (Google, GitHub, Kakao)
12- - ** Internationalization** : next-intl (web), Flutter ARB (mobile)
12+ - ** Internationalization** : next-intl (web), Flutter ARB (mobile), shared i18n package
1313- ** Auto-generated API Clients** : Orval (web), swagger_parser (mobile)
1414- ** Infrastructure as Code** : Terraform + GCP (Cloud Run, Cloud SQL, Cloud Storage)
1515- ** CI/CD** : GitHub Actions + Workload Identity Federation (keyless deployment)
1616- ** AI Agent Support** : Guidelines for AI coding agents (Gemini, Claude, etc.)
17+ - ** mise Monorepo** : mise-based task management and unified tool versions
1718
1819## Tech Stack
1920
@@ -25,6 +26,7 @@ Production-ready fullstack monorepo template with Next.js 16, FastAPI, Flutter,
2526| ** Worker** | FastAPI + CloudTasks/PubSub |
2627| ** Infrastructure** | Terraform, GCP (Cloud Run, Cloud SQL, Cloud Storage, CDN) |
2728| ** CI/CD** | GitHub Actions, Workload Identity Federation |
29+ | ** Tool Management** | mise (unified Node, Python, Flutter, Terraform versions) |
2830
2931## Prerequisites
3032
@@ -40,7 +42,7 @@ Production-ready fullstack monorepo template with Next.js 16, FastAPI, Flutter,
4042# Install mise (if not installed)
4143curl https://mise.run | sh
4244
43- # Install all runtimes (Node 24, Python 3.13, Flutter 3.32 , pnpm 10, uv)
45+ # Install all runtimes (Node 24, Python 3.13, Flutter 3, pnpm 10, uv, Terraform )
4446mise install
4547```
4648
@@ -63,7 +65,7 @@ cd apps/mobile && flutter pub get
6365### 3. Start Local Infrastructure
6466
6567``` bash
66- mise run infra:up
68+ mise //apps/api: infra:up
6769```
6870
6971This starts:
@@ -74,19 +76,19 @@ This starts:
7476### 4. Run Database Migrations
7577
7678``` bash
77- mise run migrate
79+ mise //apps/api: migrate
7880```
7981
8082### 5. Start Development Servers
8183
8284``` bash
8385# Start all services (recommended)
84- mise run dev
86+ mise dev
8587
8688# Or start individually
87- mise run dev: api # API server
88- mise run dev: web # Web server
89- mise run dev: worker # Worker
89+ mise //apps/ api:dev # API server
90+ mise //apps/ web:dev # Web server
91+ mise //apps/ worker:dev # Worker
9092```
9193
9294## Project Structure
@@ -99,41 +101,48 @@ fullstack-starter/
99101│ ├── worker/ # Background worker
100102│ ├── mobile/ # Flutter mobile app
101103│ └── infra/ # Terraform infrastructure
102- ├── packages/ # Shared packages
104+ ├── packages/
105+ │ └── i18n/ # Shared i18n package (Source of Truth)
103106├── .agent/rules/ # AI agent guidelines
104107├── .serena/ # Serena MCP config
105108└── .github/workflows/ # CI/CD
106109```
107110
108111## Commands
109112
110- ### mise Tasks (Recommended)
113+ ### mise Monorepo Tasks
114+
115+ This project uses mise monorepo mode with ` //path:task ` syntax.
116+
117+ ``` bash
118+ # List all available tasks
119+ mise tasks --all
120+ ```
111121
112122| Command | Description |
113123| ---------| -------------|
114- | ` mise run dev ` | Start all services |
115- | ` mise run lint ` | Lint all apps |
116- | ` mise run format ` | Format all apps |
117- | ` mise run test ` | Test all apps |
118- | ` mise run typecheck ` | Type check |
119- | ` mise run infra:up ` | Start local infrastructure |
120- | ` mise run infra:down ` | Stop local infrastructure |
121- | ` mise run migrate ` | Run DB migrations |
122- | ` mise run gen:api ` | Generate API client |
123-
124- ### App-specific Commands
124+ | ` mise dev ` | Start all services |
125+ | ` mise lint ` | Lint all apps |
126+ | ` mise format ` | Format all apps |
127+ | ` mise test ` | Test all apps |
128+ | ` mise typecheck ` | Type check |
129+ | ` mise i18n:build ` | Build i18n files |
130+
131+ ### App-specific Tasks
125132
126133<details >
127134<summary >API (apps/api)</summary >
128135
129136| Command | Description |
130137| ---------| -------------|
131- | ` poe dev ` | Start development server |
132- | ` poe test ` | Run tests |
133- | ` poe lint ` | Run linter |
134- | ` poe format ` | Format code |
135- | ` poe migrate ` | Run migrations |
136- | ` poe migrate-create "desc" ` | Create new migration |
138+ | ` mise //apps/api:dev ` | Start development server |
139+ | ` mise //apps/api:test ` | Run tests |
140+ | ` mise //apps/api:lint ` | Run linter |
141+ | ` mise //apps/api:format ` | Format code |
142+ | ` mise //apps/api:migrate ` | Run migrations |
143+ | ` mise //apps/api:migrate:create ` | Create new migration |
144+ | ` mise //apps/api:infra:up ` | Start local infrastructure |
145+ | ` mise //apps/api:infra:down ` | Stop local infrastructure |
137146
138147</details >
139148
@@ -142,12 +151,11 @@ fullstack-starter/
142151
143152| Command | Description |
144153| ---------| -------------|
145- | ` pnpm dev ` | Start development server |
146- | ` pnpm build ` | Production build |
147- | ` pnpm start ` | Start production server |
148- | ` pnpm test ` | Run tests |
149- | ` pnpm lint ` | Run linter |
150- | ` pnpm gen:api ` | Generate API client from OpenAPI |
154+ | ` mise //apps/web:dev ` | Start development server |
155+ | ` mise //apps/web:build ` | Production build |
156+ | ` mise //apps/web:test ` | Run tests |
157+ | ` mise //apps/web:lint ` | Run linter |
158+ | ` mise //apps/web:gen:api ` | Generate API client |
151159
152160</details >
153161
@@ -156,11 +164,22 @@ fullstack-starter/
156164
157165| Command | Description |
158166| ---------| -------------|
159- | ` flutter run ` | Run on device/simulator |
160- | ` flutter test ` | Run tests |
161- | ` flutter analyze ` | Run analyzer |
162- | ` flutter build apk ` | Build Android APK |
163- | ` flutter build ios ` | Build iOS |
167+ | ` mise //apps/mobile:dev ` | Run on device/simulator |
168+ | ` mise //apps/mobile:build ` | Build |
169+ | ` mise //apps/mobile:test ` | Run tests |
170+ | ` mise //apps/mobile:lint ` | Run analyzer |
171+ | ` mise //apps/mobile:gen:l10n ` | Generate localizations |
172+
173+ </details >
174+
175+ <details >
176+ <summary >Worker (apps/worker)</summary >
177+
178+ | Command | Description |
179+ | ---------| -------------|
180+ | ` mise //apps/worker:dev ` | Start worker |
181+ | ` mise //apps/worker:test ` | Run tests |
182+ | ` mise //apps/worker:lint ` | Run linter |
164183
165184</details >
166185
@@ -169,11 +188,42 @@ fullstack-starter/
169188
170189| Command | Description |
171190| ---------| -------------|
172- | ` pnpm plan ` | Preview Terraform changes |
173- | ` pnpm apply ` | Apply Terraform changes |
191+ | ` mise //apps/infra:init ` | Initialize Terraform |
192+ | ` mise //apps/infra:plan ` | Preview changes |
193+ | ` mise //apps/infra:apply ` | Apply changes |
194+ | ` mise //apps/infra:plan:prod ` | Preview production |
195+ | ` mise //apps/infra:apply:prod ` | Apply production |
174196
175197</details >
176198
199+ <details >
200+ <summary >i18n (packages/i18n)</summary >
201+
202+ | Command | Description |
203+ | ---------| -------------|
204+ | ` mise //packages/i18n:build ` | Build i18n files for web and mobile |
205+ | ` mise //packages/i18n:build:web ` | Build for web only |
206+ | ` mise //packages/i18n:build:mobile ` | Build for mobile only |
207+
208+ </details >
209+
210+ ## Internationalization (i18n)
211+
212+ ` packages/i18n ` is the Single Source of Truth for i18n resources.
213+
214+ ``` bash
215+ # Edit i18n files
216+ packages/i18n/source/en.arb # English (default)
217+ packages/i18n/source/ko.arb # Korean
218+ packages/i18n/source/ja.arb # Japanese
219+
220+ # Build and deploy to each app
221+ mise i18n:build
222+ # Generated files:
223+ # - apps/web/messages/*.json (Nested JSON)
224+ # - apps/mobile/lib/l10n/app_*.arb (Flutter ARB)
225+ ```
226+
177227## Configuration
178228
179229### Environment Variables
0 commit comments