>cat/works/rotation-table/README.md
掃除当番・給食当番・日直などの
最終的な
32種類の
マーケティング用LP/about)と
WebMCP
本プロジェクトは、
WebMCP対応(実験的)
Home画面/)でnavigator.modelContextdocument.modelContext をregisterTool します。
| ツール | 種別 | 内容 |
|---|---|---|
list_schedules | 読み取り | 全当 |
get_current_assignments | 読み取り | 表示中の |
get_schedule_details | 読み取り | 表示中の |
get_share_link | 読み取り | 共有済みなら |
switch_schedule | 操作 | 名前を |
advance_rotation | 操作 | 回転を |
set_rotation | 操作 | 回転を |
change_view | 操作 | 表示形式を |
create_schedule | 操作 | テンプレート名から |
duplicate_schedule | 操作 | 表示中の |
update_schedule | 操作 | 表の |
add_member | 操作 | 名前を |
remove_member | 操作 | 名前を |
update_member | 操作 | メンバーの |
configure_rotation | 操作 | 回転方 |
print_schedule | 操作 | 現在の |
共有get_share_link でuseTobanToolsclient/src/hooks/useTobanTools.ts)にclient/src/types/webmcp.d.ts(navigator.modelContext / document.modelContext の
技術スタック
| カテゴリ | ツール | 選定理由 |
|---|---|---|
| フレームワーク | React (Vite) | SPA で |
| ルーティング | wouter | 軽量 |
| スタイリング | Tailwind CSS v4 | ユーティリティファーストで |
| アニメーション | Framer Motion | 宣言的な |
| UIコンポーネント | shadcn/ui | コピー&ペースト方 |
| バックエンド | Hono (Cloudflare Workers) | 軽量・Web標準API準拠・Cloudflare Workersに |
| データベース | Cloudflare D1 + Drizzle ORM | SQLite互換で |
| データ永続化 | localStorage + D1 | ローカルが |
| 多言語 | 自作i18n | UIの |
| テスト | Vitest + Testing Library | 高速な |
| CI/CD | GitHub Actions + Lighthouse CI | push / PR で |
| E2Eテスト | Playwright | フロント〜APIを |
| エラー監視 | Sentry | 本番環境でのVITE_SENTRY_DSN 設定時のみ |
| メール送信 | Resend | お問いwrangler secret put RESEND_API_KEY) |
| パッケージマネージャ | pnpm | 高速・ディスク効率の |
データベース運用
- 本番デプロイは
pnpm run deploy:cfを正規ルートに する (migration 適用込み) wrangler deploy単体ではD1 migration が 適用されず、 保存や 共有が 500 に なることがある - API には
GET /api/health/schemaを用意しており、 スキーマの 状態を 確認できる (200: 正常 / 503: カラム不足) - サーバーは
安全網と して 不足カラムを 自動補完するが、 基本は migration を 先に 適用する 運用が 前提
構成
toban-app/
├── client/src/
│ ├── pages/ # ページコンポーネント
│ │ ├── Home.tsx # メインページ(/ — 当番表の作成・編集)
│ │ ├── useHomeState.ts # Homeページの状態管理・hook集約
│ │ ├── LandingPage.tsx # マーケティングLP(/about)
│ │ ├── SharedScheduleView.tsx # 共有リンクの閲覧ページ
│ │ ├── TemplatesPage.tsx # テンプレート一覧(SEO用LP)
│ │ ├── TemplateDetailPage.tsx # テンプレート詳細(個別LP)
│ │ └── Transfer.tsx # 編集権限の引き継ぎページ
│ ├── features/home/ # ホーム画面の機能コンポーネント群
│ ├── components/ # 共有UIコンポーネント(shadcn/ui)
│ ├── rotation/ # コア型・ユーティリティ・定数・デフォルト状態
│ ├── hooks/ # カスタムフック(useAutoSync・WebMCP登録 useTobanTools 等)
│ ├── lib/ # APIクライアント・同期マネージャ
│ ├── i18n/ # 多言語対応(自作i18n・辞書 ja/en)
│ └── types/ # 型定義(webmcp.d.ts 等)
├── server/
│ ├── worker.ts # Cloudflare Workers エントリーポイント
│ ├── api.ts # Hono APIアプリ定義
│ ├── routes/ # APIルートハンドラ(schedules, contact)
│ └── db/ # Drizzle スキーマ・マイグレーション
├── shared/ # フロント・バックエンド共有の型定義・Zodスキーマ
└── functions/ # Cloudflare Pages Functions エントリーポイント