{"id":50843939,"url":"https://github.com/tanitaka-tech/todome","last_synced_at":"2026-06-14T08:04:03.942Z","repository":{"id":352353243,"uuid":"1213952314","full_name":"tanitaka-tech/todome","owner":"tanitaka-tech","description":"A Trello-style Kanban app with a Claude Agent SDK assistant that knows your board, goals, and profile — task management that thinks with you.","archived":false,"fork":false,"pushed_at":"2026-05-05T10:51:17.000Z","size":23879,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-05-05T12:10:20.730Z","etag":null,"topics":["claude-code","dialy","open-source","react","task-management","todoapp","typescript"],"latest_commit_sha":null,"homepage":"https://tanitaka-tech.github.io/todome/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tanitaka-tech.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-18T00:10:20.000Z","updated_at":"2026-05-05T10:51:21.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tanitaka-tech/todome","commit_stats":null,"previous_names":["tanitaka-tech/todome"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tanitaka-tech/todome","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tanitaka-tech%2Ftodome","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tanitaka-tech%2Ftodome/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tanitaka-tech%2Ftodome/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tanitaka-tech%2Ftodome/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tanitaka-tech","download_url":"https://codeload.github.com/tanitaka-tech/todome/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tanitaka-tech%2Ftodome/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34313553,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-14T02:00:07.365Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","dialy","open-source","react","task-management","todoapp","typescript"],"created_at":"2026-06-14T08:04:03.168Z","updated_at":"2026-06-14T08:04:03.937Z","avatar_url":"https://github.com/tanitaka-tech.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# todome\n\n日本語 | [English](README_EN.md)\n\n- **Kanbanボード** — TODO / 進行中 / 完了の3カラム、ドラッグ\u0026ドロップ\n- **AIアシスタント** — Claude がボードと目標を把握した上でアドバイス・タスク操作\n- **目標管理** — 目標名・メモ・KPI(複数)・期日を設定し、タスクと紐付け\n- **作業時間計測** — タスクごとに再生/一時停止、見積もり対比表示、完了時刻の記録\n- **統計ダッシュボード** — 目標別作業時間の円グラフ、日/月/年の推移棒グラフ\n- **プロフィール定義** — 現在の状態、バランスホイール、行動指針、やりたいことをAIコンテキストに反映\n- **GitHub連携** — 端末間でのデータを共有 \u0026 目標にリポジトリを紐付けてAIコンテキストに反映 ([利用規約との関係](docs/github-sync-compliance.md))\n- **iCloudカレンダー連携 (CalDAV)** — Apple ID と App用パスワードで接続し、iCloud のカレンダーをスケジュールタブに読み込み（読み取り専用、RRULE 展開対応）\n\n| Kanban形式でのタスク管理 | タスク管理をAIにお任せ | 目標もタスクもAIに相談 |\n|:---:|:---:|:---:|\n| ![Kanban形式でのタスク管理](docs/manual/assets/animations/celebration.webp) | ![タスク管理をAIにお任せ](docs/manual/assets/animations/chat-ai.webp) | ![目標もタスクもAIに相談](docs/manual/assets/animations/goal-ai.webp) |\n| **AIと一緒に振り返り** | **テーマを切り替えて気分を変える** | **Gitによる履歴管理** |\n| ![AIと一緒に振り返り](docs/manual/assets/animations/retro-ai.webp) | ![テーマを切り替えて気分を変える](docs/manual/assets/animations/theme-switch.webp) | ![Gitによる履歴管理](docs/manual/assets/animations/git-history.webp) |\n\n## コンセプト\n\ntodome は完成したアプリでありながら、**ユーザーがForkして、自分専用のマネジメント環境として育てていくアプリ**としても設計されています。\nぜひお手元の環境で自分好みに調整してみてください。\n\n- 自前のAIエージェントで独自機能を追加\n- 自分の使い勝手に合わせて画面や挙動を自由に書き換え\n\n### ストア配布しない理由\n\n簡単なアプリならAIですぐに作れる時代では、「ストアでアプリを探す」よりも「自分で作ったほうが早い」という場面も珍しくありません。それほど、自分の要望に100%合致するアプリを見つけるのは難しくなっています。\n\n今後AI製アプリがストアに溢れていくと、ユーザーは目的のアプリを探すこと自体に疲れてしまい、やがて個人開発アプリはユーザーから選ばれなくなっていくのではないか——私はそう考えています。\n\nそこで行き着いたのは、「ユーザーはストアで欲しいアプリを探し続けるよりも、自分で欲しいアプリを作れたほうが幸せなのではないか」という発想です。それに自分だけがチート釣り竿を持った状態でユーザーに魚を売り捌くのは、どこかフェアではないと感じます。ユーザーにも同じ釣り竿を渡したうえで、「自分で作ったものより、このアプリのほうが質が良いから使いたい」と言ってもらえるのが理想です。\n\ntodome は、各ユーザーが自分のローカル環境で理想の形に育てていけるアプリとして設計しています。アプリを開発プラットフォームとして公開することで「自分のアプリを作る楽しさ」を体験していただく——それが todome のコンセプトです。\n\n## 画面説明書\n\n画面説明書を `docs/manual/` に配置しています。\n\n- 公開 URL: https://tanitaka-tech.github.io/todome/manual/\n- 更新手順: [docs/manual/README.md](docs/manual/README.md) を参照\n- ローカル表示: `cd docs \u0026\u0026 python3 -m http.server 8765` → `http://127.0.0.1:8765/manual/`\n\n## セットアップ\n\n### 前提条件\n\n- **Node.js** 18+\n- **[Bun](https://bun.sh/)** 1.3+ (サーバーランタイム)\n- 契約済みのClaudeCode と **Anthropic API Key** もしくは `claude login` でログイン済みの環境\n- **[gh CLI](https://cli.github.com/)** (任意 — GitHub 同期機能を使う場合)\n\n### 1. リポジトリをクローン\n\n```bash\ngit clone https://github.com/\u003cyour-org\u003e/todome.git\ncd todome\n```\n\n### 2. 環境変数を設定（`claude login` 済みならスキップ可）\n\n`claude login` でログイン済みの環境では Anthropic API Key の設定は不要です。このステップは飛ばして次へ進んでください。\n\nAPI Key で利用する場合や、データ保存先・ポートを変更したい場合のみ、プロジェクトルートに `.env` を作成します。サンプルとして `.env.example` を同梱しているので、そこからコピーするのが手早いです。\n\n```bash\ncp .env.example .env\n# 必要な行のコメントを外して値を編集\n```\n\n設定可能な環境変数:\n\n| 変数 | デフォルト | 説明 |\n|---|---|---|\n| `ANTHROPIC_API_KEY` | (未設定) | Anthropic API Key。`claude login` 済みなら不要。 |\n| `TODOME_DATA_DIR` | `./data` | SQLite DB・GitHub 同期状態・各種設定 JSON の保存先。 |\n| `TODOME_BACKEND_PORT` | `3002` | Bun サーバーが listen するポート。 |\n\n### データの保存場所と認証情報の取り扱い\n\n`TODOME_DATA_DIR`（デフォルト `./data`）配下に以下が保存されます。**いずれも平文**です。`data/` は `.gitignore` 済みでローカル限定ですが、暗号化はしていないので取り扱いに注意してください。\n\n| ファイル | 内容 |\n|---|---|\n| `todome.db` | Kanban / 目標 / プロフィール / 振り返り / スケジュール 等の SQLite DB |\n| `github_config.json` | GitHub 同期先リポジトリの紐付け情報（OAuth トークンは `gh` CLI 側に保存） |\n| `ai_config.json` | AI ツール許可リストとモデル設定 |\n| `app_config.json` | 日の境界時刻などのアプリ設定 |\n| `caldav_config.json` | **iCloud (CalDAV) の Apple ID と App用パスワード**。接続切断時に削除されます。 |\n| `repo/` | GitHub 連携時に clone されるリポジトリ（DB はここに切り替わる） |\n\niCloud 連携を使う場合は [appleid.apple.com](https://appleid.apple.com) で **App用パスワード** を発行してください。Apple ID の本パスワードは絶対に入力しないでください。\n\n### 3. 依存関係をインストール\n\n```bash\n# サーバー (Bun)\nbun install\n\n# フロントエンド\ncd client\nnpm install\ncd ..\n```\n\n## 起動方法\n\n### ワンコマンド起動 (推奨)\n\n```bash\n./start.sh          # 開発モード (Vite + bun --watch を並列起動)\n./start.sh prod     # 本番モード (client をビルドして Bun のみ起動)\n```\n\n- 開発モードはブラウザで **http://localhost:5173**、本番モードは **http://localhost:3002** でアクセスします。\n- Ctrl+C で両方のプロセスが停止します。\n- `client/node_modules` / `node_modules` が無ければ初回に `npm install` / `bun install` が自動実行されます。\n\n### 手動で起動する場合\n\n\u003cdetails\u003e\n\u003csummary\u003e開発モード (ターミナル2つ)\u003c/summary\u003e\n\n```bash\n# ターミナル 1: フロントエンド (HMR)\ncd client \u0026\u0026 npm run dev\n```\n\n```bash\n# ターミナル 2: バックエンド (Bun ホットリロード)\nbun --watch server/index.ts\n```\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e本番モード (サーバー1つ)\u003c/summary\u003e\n\n```bash\ncd client \u0026\u0026 npm run build \u0026\u0026 cd ..\nbun server/index.ts\n```\n\u003c/details\u003e\n\n## 使用例\n\n- **スマホからアクセスする** — PC で起動した todome をスマホのブラウザから開く方法(同一LAN / Tailscale / cloudflared)。詳細は [docs/smartphone-access.md](docs/smartphone-access.md) を参照。\n\n## 技術スタック\n\n| レイヤー | 技術 |\n|---|---|\n| フロントエンド | React 19 + Vite + TypeScript |\n| バックエンド | Bun + Hono + WebSocket (TypeScript) |\n| AI | Claude Agent SDK (Sonnet) |\n| 通信 | WebSocket リアルタイム双方向 |\n\n## ファイル構成\n\n```\ntodome/\n├── server/                  # Bun + Hono + WebSocket バックエンド\n│   ├── index.ts             # エントリポイント (Bun.serve)\n│   ├── config.ts / db.ts / state.ts\n│   ├── storage/             # SQLite I/O (kanban / goals / profile / retro / github)\n│   ├── ai/                  # Claude Agent SDK ラッパー\n│   ├── github/              # gh CLI / git 連携 (sync / diff / autosync)\n│   └── ws/                  # WebSocket endpoint と handler dispatch\n├── package.json             # サーバー依存関係 (Bun)\n├── .gitignore\n├── README.md\n├── data/                    # SQLite DB・GitHub 同期状態 (gitignore)\n└── client/\n    ├── package.json         # フロントエンド依存関係\n    ├── index.html           # HTML エントリポイント\n    ├── vite.config.ts       # Vite 設定\n    ├── tsconfig*.json       # TypeScript 設定\n    ├── public/\n    │   └── favicon.svg\n    └── src/\n        ├── main.tsx         # React マウントポイント\n        ├── types.ts         # 型定義\n        ├── style.css        # スタイリング\n        ├── hooks/\n        │   └── useWebSocket.ts\n        └── components/\n            ├── App.tsx             # ルートコンポーネント (状態管理・タイマー)\n            ├── KanbanBoard.tsx     # Kanban ボード (D\u0026D・タイマー)\n            ├── ChatPanel.tsx       # AI チャットパネル\n            ├── AskUserCard.tsx     # AI 質問カード\n            ├── TaskDetailModal.tsx  # タスク詳細モーダル\n            ├── GoalPanel.tsx       # 目標管理パネル\n            ├── StatsPanel.tsx      # 統計ダッシュボード\n            └── ProfilePanel.tsx    # プロフィール編集\n```\n\n## アーキテクチャ\n\n```\nブラウザ (React)                        サーバー (Bun + Hono)\n┌──────────────────┐                   ┌──────────────────┐\n│  KanbanBoard     │──kanban_*────→    │                  │\n│  GoalPanel       │──goal_*──────→    │  状態管理         │\n│  ProfilePanel    │──profile_*───→    │  (タスク/目標/    │\n│                  │←─*_sync──────     │   プロフィール)   │\n├──────────────────┤                   │                  │\n│  ChatPanel       │──message─────→    │  Claude Agent SDK │\n│                  │──ask_response─→   │  - TodoWrite     │\n│                  │←─stream_delta─    │  - AskUser       │\n│                  │←─assistant────    │  - GOAL_ADD/UPDATE│\n│                  │←─kanban_sync──    │                  │\n│                  │←─goal_sync────    │                  │\n└──────────────────┘                   └──────────────────┘\n```\n\n## Special Thanks\n\n開発にあたって参考にさせていただいた資料は [docs/special-thanks.md](docs/special-thanks.md) に記載しています。\n\n## ライセンス\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftanitaka-tech%2Ftodome","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftanitaka-tech%2Ftodome","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftanitaka-tech%2Ftodome/lists"}