前四天都還在認識 Claude Code。
今天終於要開始碰這次鐵人賽真正要做的東西:
AI 任務管理 Web App。
不過今天還是不寫程式。
如果現在直接跟 Claude Code 說:
幫我做一個 AI 任務管理 Web App。
它確實可以開始幫我建立檔案。
但問題是,我自己都還沒有把功能和架構想清楚。
如果一開始就讓 Claude Code 自己決定全部內容,很可能做到一半才發現,這跟我原本想做的東西不太一樣。
所以今天先做一件事:
先規劃,再開工。
先建立這次要使用的專案資料夾:
mkdir ai-task-manager
進入資料夾:
cd ai-task-manager
目前裡面還什麼都沒有:
ai-task-manager/
接著啟動 Claude Code:
claude
這就是之後會慢慢放進 Flask、MySQL、HTML 和 Claude API 的專案。
Day 4 有介紹過 Claude Code 的幾種權限模式。
今天剛好可以真的用到其中一個:
Plan Mode
可以在 Claude Code 裡使用:
Shift + Tab
切換模式。
Plan Mode 適合現在這種情況。
我希望 Claude Code 先分析需求、想好怎麼做,但暫時不要建立或修改檔案。
簡單來說就是:
今天先叫它想,不要急著叫它寫。
在問 Claude Code 之前,我先把自己目前想到的需求整理一下。
這次的 Web App 是本地自用的任務管理系統,所以不需要做帳號註冊和登入。
基本功能預計有:
前端使用 Flask + Jinja2。
JavaScript 只處理一些必要的互動,不打算一開始就做成 SPA。
資料會存在本機的 MySQL。
最後才會加入 Claude API。
例如我輸入:
我要準備期末專題
之後希望 AI 可以把它拆成:
決定專題題目
蒐集資料
建立專案
完成主要功能
進行測試
準備簡報
再把這些內容放進任務系統。
我先把目前想到的需求全部交給 Claude Code:
我準備開發一個 AI 任務管理 Web App。
目前預計使用:
- Python
- Flask
- HTML
- CSS
- JavaScript
- MySQL
基本功能需要:
- 新增任務
- 查看任務
- 修改任務
- 刪除任務
- 任務狀態管理
- 任務分類
- 截止日期
- 任務篩選
後面還會加入 Claude API。
使用者可以輸入一個比較大的目標,
例如「我要準備期末專題」,
讓 AI 自動拆成數個比較小的任務。
目前專案還是空的。
先不要建立或修改任何檔案。
請幫我分析:
1. 這個專案可以怎麼規劃
2. 建議的專案架構
3. 需要哪些主要功能
4. 建議的開發順序
先給我規劃,不要開始寫程式。
Claude Code 接著開始問我幾個問題。
第一個問題是前端架構。
Claude Code 給了兩個主要方向:
我最後選:
Flask + Jinja2
因為這次是本地自用的小型 Web App,我希望前期先保持簡單。
Flask 直接使用 render_template() 顯示 HTML,JavaScript 只處理必要的互動。
如果選 REST API + 類似 SPA 的做法,就要多處理 API 和前端資料更新。
目前沒有必要先把事情搞得那麼複雜。
接著 Claude Code 問:
這題我選:
1. 先不做帳號系統
這次的 Web App 是我自己在本機使用。
所以目前不需要:
users 資料表
登入
註冊
Session
密碼管理
如果以後真的有多人使用的需求,再回來加就好。
現在先把任務管理本身做好。
下一個問題是任務分類。
Claude Code 給的選擇是:
固定分類可能會像:
工作
個人
學習
這種方式比較簡單,但以後如果我想新增:
鐵人賽
專題
程式練習
就要重新修改程式。
所以我選:
使用者自訂分類
之後會建立 categories 資料表,讓分類可以自己新增和管理。
把前面的方向確定之後,我再問了一次:
目前這個 AI 任務管理 Web App 已經確定:
- 使用 Flask + Jinja2
- 使用 MySQL
- 本地自用
- 不做登入與帳號系統
- 任務分類讓使用者自行建立與刪除
- 基本功能包含新增、查看、修改、刪除任務
- 任務可以設定狀態、分類、截止日期
- 後面會加入 Claude API,讓 AI 協助把大任務拆成小任務
請根據這些需求,幫我把整個專案拆成幾個主要部分。
我想知道:
1. 建議的資料夾與檔案結構
2. 每個檔案主要負責什麼
3. 資料庫大概需要哪些資料表
4. 功能可以分成哪幾個開發階段
5. 哪些功能應該先做,哪些可以後面再加
先做規劃,不要建立或修改任何檔案。
這次 Claude Code 就開始把整個專案拆開。
Claude Code 給我的第一份規劃其實很完整。
它建議使用:
Flask Application Factory
Blueprint
Flask-SQLAlchemy
Flask-Migrate
Flask-WTF
pytest
AJAX
service
model
Claude API service
甚至連以後 AI 拆解任務可能會使用的:
parent_task_id
source
ai_breakdown_logs
都先幫我想好了。
看起來確實很完整。
但我看完之後第一個想法是:
我現在真的需要這麼多東西嗎?
這個系列本來就是從零開始學 Claude Code,而且專案只是在本機自己用。
如果一開始就出現太多框架、資料夾和套件,我可能還沒開始做任務功能,就先花很多時間搞懂專案架構。
所以我沒有直接接受 Claude Code 的第一版規劃。
我接著跟它說:
目前這個規劃對我來說有點太複雜。
這個專案主要是用來學習 Claude Code,
而且是本地自用的小型 Web App,
所以前期希望架構簡單、容易理解。
請幫我重新簡化規劃。
目前先保留:
- Flask + Jinja2
- MySQL
- 任務 CRUD
- 自訂分類
- 任務狀態
- 截止日期
- route / service / model 的基本分層
前期先不要加入:
- Application Factory
- Flask-Migrate
- Flask-WTF
- pytest
- AJAX 局部更新
- AI service 或 AI route 空殼
- parent_task_id
- source
- ai_breakdown_logs
Claude API 等基本任務管理功能完成後再加入。
請重新提供:
1. 簡化後的專案目錄
2. 每個檔案的用途
3. 第一版資料庫結構
4. 建議的開發順序
目前仍然只做規劃,不要建立任何檔案。
這次得到的規劃就比較符合我想要的方向了。
Claude Code 也確認目前的目標是本地自用的小型 Web App,第一版只保留現在真的需要的功能,Claude API 等任務管理完成後再處理。
目前規劃的目錄是:
ai-task-manager/
├── app.py
├── config.py
├── db.py
├── schema.sql
│
├── models/
│ ├── task.py
│ └── category.py
│
├── services/
│ ├── task_service.py
│ └── category_service.py
│
├── routes/
│ ├── task_routes.py
│ └── category_routes.py
│
├── templates/
│ ├── base.html
│ ├── index.html
│ ├── task_form.html
│ └── categories.html
│
├── static/
│ ├── css/
│ │ └── style.css
│ └── js/
│ └── main.js
│
├── requirements.txt
└── .env
這次沒有使用 Application Factory,而是先用一個 app.py 建立 Flask App。
另外保留基本的分層:
route
service
model
目前我先把它理解成這樣:
使用者
↓
route
↓
service
↓
model
↓
MySQL
例如我要新增一個任務:
使用者送出新增任務表單
↓
task_routes.py 收到請求
↓
task_service.py 處理新增任務的邏輯
↓
task.py 操作 tasks 資料
↓
MySQL
這樣之後如果功能變多,不會全部塞在 app.py。
目前對我來說已經夠用了。
Claude Code 第二次規劃後,資料庫也簡化成兩張表:
categories
tasks
沒有 users。
因為這次是單人使用。
也沒有先建立 AI 相關欄位。
大概會保存:
id
name
color
大概會保存:
id
title
description
status
category_id
due_date
created_at
updated_at
之後做到 Claude API 時,如果真的需要 parent_task_id 或其他欄位,再回來修改資料庫。
我反而覺得這樣比較有意思。
因為到時候可以真的遇到:
已經有資料庫了,現在需求改變,要怎麼修改?
這也比較接近實際寫專案時會遇到的情況。
Claude Code 最後幫我整理的順序是:
1. 建立專案骨架
↓
2. 建立 MySQL 資料庫
↓
3. 完成分類 CRUD
↓
4. 完成任務新增與列表
↓
5. 任務修改與刪除
↓
6. 任務狀態
↓
7. 截止日期
↓
8.任務篩選
↓
9. UI 微調
↓
10. Claude API
這個順序我就比較能接受。
每一步做完,都可以先啟動 Flask 看看目前成果,再繼續下一個功能。
今天其實一行 Web App 程式都還沒有寫。
但我覺得有一件事情已經很明顯了。
Claude Code 第一次給我的規劃很完整,甚至比我目前真正需要的東西還多。
如果我什麼都不看,直接叫它照第一版開始做,專案可能真的可以跑。
但我自己可能不知道為什麼需要這麼多東西。
所以這次我做的事情其實很簡單:
Claude Code 提出方案
↓
我看不懂/覺得太複雜
↓
告訴它我的限制
↓
重新規劃
↓
再決定要不要使用
我覺得這比拿到第一個答案就直接按下去更適合我現在學 Claude Code 的方式。
今天建立了 ai-task-manager 資料夾,也把 Web App 的第一版需求和架構確定下來。
目前還沒有建立:
app.py
templates/
models/
routes/
它們都還只是規劃。
下一篇才真的要開始建立檔案。
第一個目標也不複雜:
先讓 Flask 跑起來,然後在瀏覽器看到自己的第一個頁面。