Skip to content

teppei19980914/Defrago

Repository files navigation

Defrago

頭の中を、空にする。

脳のワーキングメモリを解放し、あなたの創造性を最大化するGTDタスク管理アプリ

セットアップ使い方技術スタック


あなたの脳は、タスクの倉庫ではない。

「あれもやらなきゃ」「これも忘れちゃいけない」——頭の中がタスクで埋め尽くされていませんか?

脳のワーキングメモリは極めて有限です。未処理のタスクがメモリを占有し続ける限り、本来の創造的な処理能力は発揮できません。

Defragoは、頭の中のすべてを安全な外部ストレージに書き出し、脳を本来のフロー状態へ導くツールです。

Mind = 脳内メモリ | Flow = 雑念なく没頭できる状態


3つの設計原則

原則 説明
Zero-Friction Capture 書き出す行為のハードルを限りなくゼロに。思いついた瞬間に外部化する
One Screen, One Decision 各画面で求める判断は常に1つだけ。迷わない、考えさせない
Think Less, Do More アプリが判断フローを導く。管理に頭を使わず、行動に集中する

主な機能

GTD 4つのフェーズ

収集 → 明確化 → 実行 → 見直し → (循環)
フェーズ できること
収集 気になることをすべてInboxに書き出す。ゼロフリクションで脳を空にする。分類は後でOK
明確化 4つの分類ボタンから選択。委任・プロジェクト・即実行・タスクに振り分ける
実行 今やるべきタスクをフィルタリング。ステータス変更はワンタップ
見直し 完了タスクの振り返りとプロジェクトの再計画。GTDサイクルを回し続ける

プロジェクト計画(ナチュラル・プランニング・モデル)

大きなプロジェクトは、GTD理論に基づく6ステップで構造化します。

Step 1-2  目的の定義 & 望ましい結果
          → 判断基準が明確になり、迷いがなくなる

Step 3    ブレインストーミング
          → 判断せず、関連する要素をすべて洗い出す

Step 4-5  組織化 & サポート資料
          → タスクの整理・期限設定・資料の保管場所を記録

Step 6    ネクストアクションの特定
          → 「今日、自分は何をするか」が明確になる

エッセンシャル思考による設計

Defrago v2.0.0 では、複雑さを排除し本質的なものだけに集中する「エッセンシャル思考」を採用しました。

v1とv2の主な変更点

機能 v1 v2(エッセンシャル思考)
優先度付け 重要度 × 緊急度で10段階評価 4つの分類で直感的に振り分け
カレンダー機能 独立した分類 タスク化して即実行に統合
フェーズ数 5フェーズ(収集→明確化→整理→実行→見直し) 4フェーズ(収集→明確化→実行→見直し)
分類方式 ウィザード(Yes/No質問) 4ボタン(委任/プロジェクト/即実行/タスク)
削除後 完全削除 30日間のトラッシュ機能で復旧可能

迷いの時間を短縮し、判断から行動への遷移を最速化します。


セットアップ

必要条件

  • Python 3.12 以上
  • uv(推奨)または pip

インストール & 起動

git clone https://github.com/your-username/mindflow.git
cd mindflow
uv sync --dev

# 環境変数を設定(本番はPostgreSQLを推奨)
export SECRET_KEY="your-secret-key"

# ローカル開発: SQLiteがデフォルト
# 本番: Neon PostgreSQL
# export DATABASE_URL="postgresql://user:password@host/dbname"

# 起動
uv run defrago-web

ブラウザで http://localhost:8000 にアクセス。モバイル・PC両対応。


使い方

1. 頭の中を空にする(収集)

Inboxを開き、気になっていることをすべて書き出します。正確さや順番は気にしません。「あとで考える」を脳から追い出すことが目的です。

分類は後からでもOK。今はとにかく書き出すことに集中してください。

2. 4つのボタンで即座に分類(明確化)

Inboxの各アイテムに対し、4つの分類ボタンから1つを選ぶだけです。迷いの時間がありません。

分類 説明
委任(Delegation) 自分でやらないもの。誰かに頼むか、削除する
プロジェクト(Project) 2ステップ以上必要。6ステップナチュラル・プランニングで計画
即実行(Do Now) 2分以内で完結。すぐやる、または近い将来にやる
タスク(Task) 時間や場所を指定したもの。スケジュール・優先度を設定

削除したアイテムは30日間トラッシュに保管。誤削除も安心です。

3. 行動する(実行)

ダッシュボードが「次に何をすべきか」を教えてくれます。あなたは実行するだけです。

4. 振り返る(見直し)

完了タスクをレビューし、プロジェクトを再計画します。GTDサイクルが回り続けることで、頭の中は常にクリアな状態を保てます。


アーキテクチャ

src/study_python/gtd/
├── models.py              # データモデル(StrEnum + dataclass)
├── repository_protocol.py # リポジトリProtocol
├── logic/                 # ビジネスロジック(Web非依存)
│   ├── collection.py      # 収集
│   ├── clarification.py   # 明確化
│   ├── execution.py       # 実行
│   └── review.py          # 見直し
└── web/                   # FastAPI Webアプリケーション
    ├── app.py             # アプリファクトリ
    ├── auth.py            # bcrypt認証・ユーザー管理
    ├── labels.py          # テキスト外部化(labels.json)
    ├── template_engine.py # Jinja2テンプレートエンジン
    ├── db_models.py       # SQLAlchemy ORM(UserRow, NotificationRow, GtdItemRow)
    ├── routers/           # ルーター(auth, inbox, clarification, execution, review, dashboard, iconbar)
    ├── templates/         # Jinja2 + HTMXパーシャル
    └── static/            # CSS + HTMX + labels.json

設計方針

  • ロジック層分離: GtdRepositoryProtocolを介し、ビジネスロジックをWeb層から完全分離
  • 3層アーキテクチャ: Model → Logic → Web
  • HTMX: ページ遷移なしのインタラクティブUI。SPAの体験をサーバーサイドで実現
  • テキスト外部化: 全ユーザー向けテキストはlabels.jsonに集約。ハードコーディング禁止
  • マルチテナント対応: ユーザーテーブルにより各ユーザーのデータを分離・保護

マルチユーザー対応

ユーザー登録と認証

  • ユーザーは本アプリで自由に登録可能(ユーザー名: 3-50文字の英数字・ハイフン・アンダースコア)
  • パスワードはbcryptで安全にハッシュ化・保存
  • セッション認証により、ログイン状態を安全に保持

データ分離

  • 全GTDアイテムはuser_idでグループ化。ログインユーザーのデータのみ表示
  • 通知・プロジェクトも同様にユーザー単位で管理
  • マルチテナント環境に対応

アイコンバー機能

ヘッダーのアイコンバーは、Defragoの補助的なツールにアクセスできます。

アイコン 機能 説明
通知 Notifications リリース通知・タスク関連のお知らせ
実績 Achievements 完了タスク数・プロジェクト達成の記録
ヘルプ Help アプリの使い方ガイド・チュートリアル
お問い合わせ Contact 開発チームへのフィードバック送信

開発

uv run pytest                          # テスト
uv run pytest --cov=src/study_python   # カバレッジ付き
uv run ruff check .                    # リンター
uv run ruff format .                   # フォーマッター
uv run mypy src/                       # 型チェック

技術スタック

カテゴリ 技術
Web FastAPI + Jinja2 + HTMX
DB PostgreSQL(本番)/ SQLite(開発)+ SQLAlchemy
認証 bcrypt(パスワードハッシュ化)
テスト pytest + httpx
品質 ruff + mypy(strict)
デプロイ Docker + Render + Neon PostgreSQL

デプロイ

Render + Neon PostgreSQLにデプロイ可能(render.yaml定義済み)。環境変数SECRET_KEYDATABASE_URLを設定してください。詳細は運用マニュアルを参照。

ライセンス

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors