iT邦幫忙

2026 iThome 鐵人賽

DAY 5
0
Claude AI

從零開始 Claude Code:30 天打造 AI 任務管理 Web App系列 第 5

[Day 5] 不急著寫程式,先讓 Claude Code 幫我規劃專案

  • 分享至 

  • xImage
  •  

前四天都還在認識 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 的專案。


先切到 Plan Mode

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

我先把目前想到的需求全部交給 Claude Code:

我準備開發一個 AI 任務管理 Web App。

目前預計使用:
- Python
- Flask
- HTML
- CSS
- JavaScript
- MySQL

基本功能需要:
- 新增任務
- 查看任務
- 修改任務
- 刪除任務
- 任務狀態管理
- 任務分類
- 截止日期
- 任務篩選

後面還會加入 Claude API。

使用者可以輸入一個比較大的目標,
例如「我要準備期末專題」,
讓 AI 自動拆成數個比較小的任務。

目前專案還是空的。

先不要建立或修改任何檔案。

請幫我分析:
1. 這個專案可以怎麼規劃
2. 建議的專案架構
3. 需要哪些主要功能
4. 建議的開發順序

先給我規劃,不要開始寫程式。

Claude Code 接著開始問我幾個問題。


前端要怎麼做?

第一個問題是前端架構。
Claude Code 給了兩個主要方向:
https://ithelp.ithome.com.tw/upload/images/20260919/20183857ZJS1T1FKQO.png
我最後選:

Flask + Jinja2

因為這次是本地自用的小型 Web App,我希望前期先保持簡單。
Flask 直接使用 render_template() 顯示 HTML,JavaScript 只處理必要的互動。
如果選 REST API + 類似 SPA 的做法,就要多處理 API 和前端資料更新。
目前沒有必要先把事情搞得那麼複雜。


要不要做使用者系統?

接著 Claude Code 問:
https://ithelp.ithome.com.tw/upload/images/20260919/20183857EcwLXSFxTe.png
這題我選:

1. 先不做帳號系統

這次的 Web App 是我自己在本機使用。
所以目前不需要:

users 資料表
登入
註冊
Session
密碼管理

如果以後真的有多人使用的需求,再回來加就好。
現在先把任務管理本身做好。


任務分類要怎麼設計?

下一個問題是任務分類。

Claude Code 給的選擇是:
https://ithelp.ithome.com.tw/upload/images/20260919/20183857IiY7O5Xogg.png
固定分類可能會像:

工作
個人
學習

這種方式比較簡單,但以後如果我想新增:

鐵人賽
專題
程式練習

就要重新修改程式。
所以我選:

使用者自訂分類

之後會建立 categories 資料表,讓分類可以自己新增和管理。


Claude Code 會怎麼拆這個專案?

把前面的方向確定之後,我再問了一次:

目前這個 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 再簡化一次

我接著跟它說:

目前這個規劃對我來說有點太複雜。

這個專案主要是用來學習 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 在做什麼?

目前我先把它理解成這樣:

 使用者
   ↓
 route
   ↓
service
   ↓
 model
   ↓
 MySQL

例如我要新增一個任務:

使用者送出新增任務表單
        ↓
task_routes.py 收到請求
        ↓
task_service.py 處理新增任務的邏輯
        ↓
task.py 操作 tasks 資料
        ↓
      MySQL

這樣之後如果功能變多,不會全部塞在 app.py
目前對我來說已經夠用了。


第一版資料庫只需要兩張表

Claude Code 第二次規劃後,資料庫也簡化成兩張表:

categories
tasks

沒有 users
因為這次是單人使用。
也沒有先建立 AI 相關欄位。

categories

大概會保存:

id
name
color

tasks

大概會保存:

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 看看目前成果,再繼續下一個功能。


Claude Code 的第一個答案不用全部接受

今天其實一行 Web App 程式都還沒有寫。
但我覺得有一件事情已經很明顯了。
Claude Code 第一次給我的規劃很完整,甚至比我目前真正需要的東西還多。
如果我什麼都不看,直接叫它照第一版開始做,專案可能真的可以跑。
但我自己可能不知道為什麼需要這麼多東西。
所以這次我做的事情其實很簡單:

Claude Code 提出方案
        ↓
我看不懂/覺得太複雜
        ↓
   告訴它我的限制
        ↓
     重新規劃
        ↓
  再決定要不要使用

我覺得這比拿到第一個答案就直接按下去更適合我現在學 Claude Code 的方式。


今天做到這裡

今天建立了 ai-task-manager 資料夾,也把 Web App 的第一版需求和架構確定下來。
目前還沒有建立:

app.py
templates/
models/
routes/

它們都還只是規劃。
下一篇才真的要開始建立檔案。
第一個目標也不複雜:
先讓 Flask 跑起來,然後在瀏覽器看到自己的第一個頁面。


上一篇
[Day 4] Claude Code 到底看得到什麼?認識專案與工作目錄
系列文
從零開始 Claude Code:30 天打造 AI 任務管理 Web App5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言