Skip to content

Commit 783c67b

Browse files
committed
chore: update Flutter version from 3.32 to 3.38
- Update CI/CD workflows (deploy-mobile.yml, review.yml) to use Flutter 3.38.5 - Update AI agent guidelines (.agent/rules/GEMINI.md) - Update project documentation memories (.serena/memories/) - All references now consistently use Flutter 3.38
1 parent 9b140c5 commit 783c67b

7 files changed

Lines changed: 384 additions & 3 deletions

File tree

.agent/rules/GEMINI.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ Modern fullstack monorepo template with Next.js 16, FastAPI, Flutter, and GCP in
3030
- **Retry**: tenacity
3131

3232
### Mobile (apps/mobile)
33-
- **Framework**: Flutter 3.32
33+
- **Framework**: Flutter 3.38
3434
- **State**: Riverpod 3
3535
- **Routing**: go_router 17
3636
- **API Client**: swagger_parser (OpenAPI codegen)

.github/workflows/deploy-mobile.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ on:
1313
workflow_dispatch:
1414

1515
env:
16-
FLUTTER_VERSION: "3.32.0"
16+
FLUTTER_VERSION: "3.38.5"
1717
RUBY_VERSION: "3.3"
1818

1919
jobs:

.github/workflows/review.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ jobs:
126126

127127
- uses: subosito/flutter-action@v2
128128
with:
129-
flutter-version: "3.32.0"
129+
flutter-version: "3.38.5"
130130
channel: stable
131131
cache: true
132132

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
# Code Style & Conventions
2+
3+
## JavaScript/TypeScript (Web) - Biome
4+
5+
### Configuration: `biome.json`
6+
7+
| Setting | Value |
8+
|---------|-------|
9+
| Indent | 2 spaces |
10+
| Quotes | double |
11+
| Semicolons | always |
12+
| Trailing commas | ES5 |
13+
| Line width | 100 |
14+
15+
### Key Rules
16+
- `noUnusedImports`: error
17+
- `noUnusedVariables`: error
18+
- `noExplicitAny`: error
19+
- `useImportType`: error (use `import type` for types)
20+
- `useExhaustiveDependencies`: warn
21+
22+
### Ignored Patterns
23+
- `node_modules/`, `.next/`, `dist/`, `build/`, `coverage/`
24+
- Generated files: `*.gen.ts`, `apps/web/src/lib/api/**`
25+
26+
## Python (API, Worker) - Ruff
27+
28+
### Configuration: `ruff.toml`
29+
30+
| Setting | Value |
31+
|---------|-------|
32+
| Line length | 88 |
33+
| Target version | Python 3.12 |
34+
| Quote style | double |
35+
| Indent style | space |
36+
37+
### Rule Sets
38+
- `E/W`: pycodestyle (errors/warnings)
39+
- `F`: Pyflakes
40+
- `I`: isort (import sorting)
41+
- `B`: flake8-bugbear
42+
- `UP`: pyupgrade
43+
- `ASYNC`: flake8-async
44+
- `S`: bandit (security)
45+
- `SIM`: flake8-simplify
46+
- `RUF`: Ruff-specific
47+
48+
### Ignored Rules
49+
- `B008`: Function call in argument defaults (for FastAPI Depends)
50+
- `S101`: Use of assert (allowed in tests)
51+
52+
### Type Checking
53+
- mypy with strict mode
54+
- Pydantic plugin enabled
55+
56+
## Dart/Flutter (Mobile)
57+
58+
### Configuration: `analysis_options.yaml` + `very_good_analysis`
59+
60+
- Strict mode enabled
61+
- All recommended lints
62+
- Flutter-specific lints
63+
- `dart format` for formatting
64+
65+
## Terraform
66+
67+
- `terraform fmt` for formatting
68+
- `terraform validate` for validation
69+
70+
## General Conventions
71+
72+
### Naming
73+
- TypeScript: camelCase for functions/variables, PascalCase for classes/components
74+
- Python: snake_case for functions/variables, PascalCase for classes
75+
- Dart: camelCase for functions/variables, PascalCase for classes
76+
77+
### Documentation
78+
- TypeScript: JSDoc for public APIs
79+
- Python: Docstrings (Google style recommended)
80+
- Dart: Dartdoc comments
81+
82+
### Type Safety
83+
- **NEVER** use `as any`, `@ts-ignore`, `@ts-expect-error` in TypeScript
84+
- **ALWAYS** use type hints in Python
85+
- **ALWAYS** use strict types in Dart
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Fullstack Starter - Project Overview
2+
3+
## Purpose
4+
Production-ready fullstack monorepo template with Next.js 16, FastAPI, Flutter, and GCP infrastructure.
5+
6+
## Tech Stack
7+
8+
| Layer | Technology |
9+
|-------|------------|
10+
| **Frontend** | Next.js 16, React 19, TailwindCSS v4, shadcn/ui, TanStack Query, Jotai |
11+
| **Backend** | FastAPI, SQLAlchemy (async), PostgreSQL 16, Redis 7 |
12+
| **Mobile** | Flutter 3.38, Riverpod 3, go_router 17, Firebase Crashlytics, Fastlane |
13+
| **Worker** | FastAPI + CloudTasks/PubSub |
14+
| **Infrastructure** | Terraform, GCP (Cloud Run, Cloud SQL, Cloud Storage, CDN) |
15+
| **CI/CD** | GitHub Actions, Workload Identity Federation |
16+
| **Tool Management** | mise (unified Node 24, Python 3.13, Flutter 3, pnpm 10, uv, Terraform 1) |
17+
18+
## Key Features
19+
- Type Safety: TypeScript, Pydantic, Dart
20+
- Authentication: better-auth OAuth (Google, GitHub, Facebook)
21+
- Internationalization: next-intl (web), Flutter ARB (mobile), shared i18n package
22+
- Auto-generated API Clients: Orval (web), swagger_parser (mobile)
23+
- Infrastructure as Code: Terraform + GCP
24+
- CI/CD: GitHub Actions + Workload Identity Federation (keyless deployment)
25+
- AI Agent Support: Guidelines in `.agent/rules/`
26+
- mise Monorepo: mise-based task management
27+
28+
## Project Structure
29+
```
30+
fullstack-starter/
31+
├── apps/
32+
│ ├── api/ # FastAPI backend (Python 3.13, uv)
33+
│ ├── web/ # Next.js 16 frontend (Node 24, pnpm)
34+
│ ├── worker/ # Background worker (Python 3.13, uv)
35+
│ ├── mobile/ # Flutter mobile app (Flutter 3.38)
36+
│ └── infra/ # Terraform infrastructure
37+
├── packages/
38+
│ ├── i18n/ # Shared i18n package (Source of Truth)
39+
│ └── shared/ # Shared utilities
40+
├── .agent/rules/ # AI agent guidelines
41+
├── .serena/ # Serena MCP config
42+
└── .github/workflows/ # CI/CD pipelines
43+
```
44+
45+
## Local Infrastructure (via Docker Compose)
46+
- PostgreSQL (port 5432)
47+
- Redis (port 6379)
48+
- MinIO (ports 9000, 9001)
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
# Suggested Commands
2+
3+
This project uses **mise monorepo mode** with `//path:task` syntax.
4+
5+
## Setup Commands
6+
7+
```bash
8+
# Install mise (if not installed)
9+
curl https://mise.run | sh
10+
11+
# Install all runtimes (Node 24, Python 3.13, Flutter 3, pnpm 10, uv, Terraform)
12+
mise install
13+
14+
# Install dependencies
15+
cd apps/web && pnpm install
16+
cd apps/api && uv sync --frozen
17+
cd apps/worker && uv sync --frozen
18+
cd apps/mobile && flutter pub get
19+
```
20+
21+
## Root Tasks (All Apps)
22+
23+
| Command | Description |
24+
|---------|-------------|
25+
| `mise dev` | Start all services |
26+
| `mise lint` | Lint all apps |
27+
| `mise format` | Format all apps |
28+
| `mise test` | Test all apps |
29+
| `mise typecheck` | Type check all apps |
30+
| `mise i18n:build` | Build i18n files |
31+
| `mise gen:api` | Generate OpenAPI schema and API clients |
32+
| `mise tasks --all` | List all available tasks |
33+
34+
## API (apps/api) - Python/FastAPI
35+
36+
| Command | Description |
37+
|---------|-------------|
38+
| `mise //apps/api:dev` | Start development server |
39+
| `mise //apps/api:test` | Run tests |
40+
| `mise //apps/api:lint` | Run Ruff linter |
41+
| `mise //apps/api:format` | Format with Ruff |
42+
| `mise //apps/api:typecheck` | Type check with mypy |
43+
| `mise //apps/api:migrate` | Run DB migrations |
44+
| `mise //apps/api:migrate:create` | Create new migration |
45+
| `mise //apps/api:gen:openapi` | Generate OpenAPI schema |
46+
| `mise //apps/api:infra:up` | Start local infra (PostgreSQL, Redis, MinIO) |
47+
| `mise //apps/api:infra:down` | Stop local infrastructure |
48+
49+
## Web (apps/web) - Next.js/TypeScript
50+
51+
| Command | Description |
52+
|---------|-------------|
53+
| `mise //apps/web:dev` | Start development server |
54+
| `mise //apps/web:build` | Production build |
55+
| `mise //apps/web:test` | Run Vitest tests |
56+
| `mise //apps/web:lint` | Run Biome linter |
57+
| `mise //apps/web:format` | Format with Biome |
58+
| `mise //apps/web:typecheck` | Type check with tsc |
59+
| `mise //apps/web:gen:api` | Generate API client (Orval) |
60+
61+
## Worker (apps/worker) - Python/FastAPI
62+
63+
| Command | Description |
64+
|---------|-------------|
65+
| `mise //apps/worker:dev` | Start worker |
66+
| `mise //apps/worker:test` | Run tests |
67+
| `mise //apps/worker:lint` | Run Ruff linter |
68+
| `mise //apps/worker:format` | Format with Ruff |
69+
70+
## Mobile (apps/mobile) - Flutter/Dart
71+
72+
| Command | Description |
73+
|---------|-------------|
74+
| `mise //apps/mobile:dev` | Run on device/simulator |
75+
| `mise //apps/mobile:build` | Build app |
76+
| `mise //apps/mobile:test` | Run Flutter tests |
77+
| `mise //apps/mobile:lint` | Run flutter analyze |
78+
| `mise //apps/mobile:format` | Format with dart format |
79+
| `mise //apps/mobile:gen:l10n` | Generate localizations |
80+
| `mise //apps/mobile:gen:api` | Generate API client (swagger_parser) |
81+
82+
## Infrastructure (apps/infra) - Terraform
83+
84+
| Command | Description |
85+
|---------|-------------|
86+
| `mise //apps/infra:init` | Initialize Terraform |
87+
| `mise //apps/infra:plan` | Preview changes |
88+
| `mise //apps/infra:apply` | Apply changes |
89+
| `mise //apps/infra:plan:prod` | Preview production |
90+
| `mise //apps/infra:apply:prod` | Apply production |
91+
92+
## i18n (packages/i18n)
93+
94+
| Command | Description |
95+
|---------|-------------|
96+
| `mise //packages/i18n:build` | Build i18n files for web and mobile |
97+
| `mise //packages/i18n:build:web` | Build for web only |
98+
| `mise //packages/i18n:build:mobile` | Build for mobile only |
99+
100+
## Fastlane (Mobile CI/CD)
101+
102+
```bash
103+
cd apps/mobile
104+
bundle install
105+
106+
# Android
107+
bundle exec fastlane android build # Build APK
108+
bundle exec fastlane android firebase # Deploy to Firebase App Distribution
109+
110+
# iOS
111+
bundle exec fastlane ios build # Build iOS (no codesign)
112+
bundle exec fastlane ios testflight_deploy # Deploy to TestFlight
113+
```
114+
115+
## System Utils (Darwin/macOS)
116+
117+
```bash
118+
# Git operations
119+
git status
120+
git diff
121+
git log --oneline -10
122+
git add <files>
123+
git commit -m "message"
124+
125+
# File operations
126+
ls -la
127+
find . -name "*.py" -type f
128+
grep -r "pattern" --include="*.ts"
129+
130+
# Docker
131+
docker compose -f apps/api/docker-compose.infra.yml up -d
132+
docker compose -f apps/api/docker-compose.infra.yml down
133+
docker compose -f apps/api/docker-compose.infra.yml down -v # with volume cleanup
134+
```

0 commit comments

Comments
 (0)