Skip to content

Commit 21712c6

Browse files
committed
refactor: migrate to mise monorepo mode
- Enable experimental_monorepo_root in root mise.toml - Add mise.toml to each app/package with local tasks - Remove pnpm-workspace.yaml (no longer needed) - Remove apps/infra/package.json (replaced by mise tasks) - Update README with mise monorepo task syntax
1 parent 9b93d27 commit 21712c6

12 files changed

Lines changed: 240 additions & 142 deletions

File tree

README.en.md

Lines changed: 90 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -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)
4143
curl 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)
4446
mise 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

6971
This 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

Comments
 (0)