Easy-to-manage touch screens
Free, open-source touch screens. Guided USB setup, a drag-and-drop editor and local control. Made for Home Assistant.
旅行の計画を作成・共有できる共同編集アプリ。
Translation pending
LifestyleTypeScript · RustGitHub @u-stemOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
旅行計画Webアプリケーション
Translation pending
Taken from the repository README
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 に影響しないため問題ない)。