No updates detected yet. GitHub releases will appear here.
旅行計画Webアプリケーション
Loading the full README. The saved excerpt is shown below.
旅行計画Webアプリケーション。Turborepo + bun workspaces によるモノレポ構成。Read the full README ↗
旅行計画Webアプリケーション。Turborepo + bun workspaces によるモノレポ構成。
| 機能 | 説明 |
|---|---|
| 旅行計画 | 日程・スケジュール管理、メンバー招待、ロールベースの権限制御 (owner / editor / viewer) |
| リアルタイム共同編集 | メンバー間でスケジュールの変更がリアルタイムに同期 |
| 費用管理 | 費用の記録・カテゴリ分類・割り勘計算・精算チェック |
| 投票 | 旅行内のスケジュール投票、独立したかんたん投票 (リンク共有対応) |
| ブックマーク | 行き先のブックマークリスト管理 |
| お土産管理 | 贈り先ごとの購入リスト・優先度設定 |
| ルーレット | 行き先をランダムに決定 |
| 通知 | アプリ内通知・Web Push 通知 |
| 共有 | トークンベースの旅行共有 (未登録ユーザーにも閲覧可) |
| デスクトップアプリ | Tauri 製ネイティブアプリ (macOS / Windows)、自動更新対応 |
| モバイル対応 | SP 専用レイアウトによるモバイルフレンドリーな UI |
| 外部 API (v1) | API キー (Bearer トークン) + スコープ認証の REST API。旅行・費用・候補・お土産・ブックマーク・記事の取得/作成/更新 |
| MCP サーバー | 外部 API v1 を stdio でラップする Model Context Protocol サーバー。Claude Desktop / Claude Code から旅行データを操作 |
sugara/
├── apps/
│ ├── web/ # Next.js フロントエンド + API Route Handler
│ ├── api/ # Hono API ルート・DB スキーマ・認証 (外部 API v1 を含む)
│ ├── desktop/ # Tauri デスクトップアプリ (macOS / Windows)
│ └── mcp/ # MCP (Model Context Protocol) サーバー (外部 API v1 を stdio でラップ)
├── packages/
│ └── shared/ # 共有 Zod スキーマ・型定義
├── supabase/ # Supabase CLI 設定・マイグレーション
├── biome.json # Biome 設定 (lint / format)
├── lefthook.yml # Git フック設定
└── turbo.json # Turborepo 設定
| レイヤー | 技術 |
|---|---|
| モノレポ | Turborepo + bun workspaces |
| フロントエンド | Next.js 16 (App Router) + Tailwind CSS v4 + shadcn/ui |
| API | Hono (Next.js Route Handler 統合) |
| データベース | Supabase PostgreSQL + Drizzle ORM |
| リアルタイム同期 | Supabase Realtime (Broadcast + Presence) |
| 認証 | Better Auth (メール/パスワード) |
| バリデーション | Zod (共有スキーマ) |
| デスクトップ | Tauri v2 (macOS / Windows、自動更新) |
| テスト | Vitest (ユニット / 統合) + Playwright (E2E) |
| リンター / フォーマッター | Biome |
| Git フック | lefthook (pre-commit / commit-msg / pre-push) |
| デプロイ | Vercel (Web) + GitHub Actions (Desktop) |
packageManager で固定)bun install
supabase start
bun run db:migrate
bun run db:seed
bun install で依存関係をインストール (lefthook も自動セットアップ)supabase start でローカル Supabase を起動 (PostgreSQL, Realtime など)bun run db:migrate でマイグレーションを実行bun run db:seed で開発用シードデータを投入apps/web/.env.example をコピーして .env.local を作成:
cp apps/web/.env.example apps/web/.env.local
supabase status で取得した値を設定する。
supabase start # ローカル Supabase を起動
bun run --filter @sugara/web dev # Next.js 開発サーバーを起動
supabase db reset
bun run db:migrate
bun run db:seed
プロジェクトルートから実行:
| コマンド | 説明 |
|---|---|
bun run build | 全パッケージビルド |
bun run test | 全テスト実行 (Vitest) |
bun run lint | 全パッケージ lint (Biome) |
bun run format | 全パッケージ format (Biome) |
bun run check | lint + format + import sort (Biome) |
bun run check-types | TypeScript 型チェック |
bun run db:generate | マイグレーション生成 (スキーマ変更後) |
bun run db:migrate | マイグレーション実行 |
bun run db:studio | Drizzle Studio 起動 |
bun run db:seed | 開発用シードデータ投入 |
bun run db:seed-faqs | FAQ データ投入 |
bun run test:coverage | カバレッジ付きテスト実行 |
bun run test:e2e | E2E テスト実行 (Playwright) |
パッケージ単位の実行:
bun run --filter @sugara/api test
bun run --filter @sugara/web lint
bun run --filter @sugara/shared check-types
main は Branch Protection で保護されており 直 push 不可。変更は feature branch → PR → CI green → squash merge の流れ。
main = Production (Vercel が自動デプロイ)<type>/<topic> (例: fix/trip-cover-upload, feat/expense-itemize)詳細: docs/development/release-flow.md
bun install で自動セットアップされる。CI で走るものはローカルで重複実行しない階層設計。
| フック | 内容 | 目的 |
|---|---|---|
| pre-commit | branch-guard (main/master への直接コミット禁止) + bun run check (Biome) + check-i18n (messages 変更時のみ) | 1 秒以内に終わる軽いチェック |
| commit-msg | Conventional Commits 形式を強制 | 履歴の一貫性 |
| pre-push | bun run check-types + bun audit | push 前に型エラーを検出 |
テスト実行は CI 側に集約 (ローカルの pre-push には含めない)。ローカルで走らせるなら bun run test。
<type>: <日本語の説明>
| type | 用途 |
|---|---|
| feat | 新機能 |
| fix | バグ修正 |
| docs | ドキュメント |
| refactor | リファクタリング |
| test | テスト |
| chore | ビルド、CI |
| perf | パフォーマンス改善 |
ドキュメント (Markdown) のみの変更では、CI の重いジョブ (check / test / test-integration) が path フィルタで自動スキップされる。スキップされた必須チェックは Branch Protection 上「成功」扱いになるため、PR はそのままマージできる。タグを付ける必要はない。
コミットメッセージのタグでスキップを制御することもできる。
| タグ | 効果 | 用途 |
|---|---|---|
[skip deploy] | Vercel デプロイをスキップ (GitHub Actions は動く) | デスクトップのみのリリース時 |
[skip ci] | Vercel + GitHub Actions を両方スキップ | PR では使わない (下記) |
[skip ci] を PR コミットに付けると、必須チェック (check / test) のワークフロー自体が起動せず、チェックが永久に「待ち」のままマージ不能になる。main は Branch Protection で直 push 不可なので [skip ci] は実質使い道がない。ドキュメントのみの変更は上記の自動スキップに任せる。apps/web/vercel.json の buildCommand が next build の前に bun run db:migrate を実行) の一部として走る。独立した migration 用 workflow はない。そのため [skip deploy] で Vercel をスキップすると migration も走らない (デスクトップのみのリリースは DB に影響しないため問題ない)。