TTechSpecs

建立待辦事應用 - React Todo App 實戰範例

本範例將展示如何使用 Superpowers 的各個 skills 來完成一個完整的開發任務:從零開始建立一個 React Todo 應用程式。

專案概述

目標:建立一個功能完整的待辦事應用

核心功能

  • 新增待辦事項目
  • 標記項目為完成
  • 刪除項目
  • 本地儲存持久化

技術棧:React + TypeScript + Tailwind CSS

完整開發流程

第 1 步:使用 Brainstorming Skill 探索設計方案

觸發

使用 brainstorming skill 探索 Todo 應用的功能設計和技術實作方案

AI 回應摘要

功能設計探索:

核心功能設計:
1. 簡潔的 UI 設計
2. 直觀的操作流程
3. 清晰的視覺回饋

技術方案探索:
方案一:Class Component + State
- 優點:熟悉的使用方式
- 缺點:程式碼較冗長

方案二:Hooks + useState
- 優點:程式碼簡潔、現代化
- 缺點:需要熟悉 Hooks

方案三:Redux + Toolkit
- 優點:狀態管理強大
- 缺點:對簡單應用過度工程

建議:使用方案二(Hooks + useState),對 Todo 應用來說足夠。

第 2 步:使用 Writing Plans Skill 制定實作計畫

觸發

使用 writing-plans skill 制定 Todo 應用的詳細實作計畫

AI 回應摘要

## 實作計畫

### 第 1 步:專案初始化(30 分鐘)
- 使用 Vite 建立 React + TypeScript 專案
- 安裝 Tailwind CSS
- 設定專案結構

### 第 2 步:建立核心組件(2 小時)
- TodoItem 組件(顯示單一待辦項目)
- TodoList 組件(管理項目列表)
- TodoInput 組件(新增項目輸入)
- App 組件(主應用容器)

### 第 3 步:實作狀態管理(1.5 小時)
- 使用 useState 管理項目列表
- 實作新增、刪除、切換狀態功能
- 本地儲存整合

### 第 4 步:樣式和優化(1 小時)
- 使用 Tailwind CSS 設計樣式
- 響應式設計
- 使用者體驗優化

### 第 5 步:測試和部署(30 分鐘)
- 功能測試
- 建置優化
- 部署到 Vercel/Netlify

## 驗收標準
- [ ] 可以新增待辦事項目
- [ ] 可以標記項目為完成
- [ ] 可以刪除項目
- [ ] 資料在頁面重新整理後保留
- [ ] 在 mobile 和 desktop 都正常運作

## 總時間估算
5.5 小時

第 3 步:使用 Executing Plans Skill 實作功能

觸發

使用 executing-plans skill 按照計畫實作 Todo 應用

AI 回應摘要

## 開始實作

### 第 1 步:專案初始化

執行專案設定...

### 第 2 步:建立核心組件

建立 TodoItem.tsx:

```typescript
interface Todo {
  id: number;
  text: string;
  completed: boolean;
}

export default function TodoItem({ todo, onToggle, onDelete }: {
  todo: Todo;
  onToggle: (id: number) => void;
  onDelete: (id: number) => void;
}) {
  return (
    <div className="flex items-center gap-3 p-3 bg-white rounded-lg shadow">
      <input
        type="checkbox"
        checked={todo.completed}
        onChange={() => onToggle(todo.id)}
        className="w-5 h-5"
      />
      <span className={`flex-1 ${todo.completed ? 'line-through text-gray-400' : ''}`}>
        {todo.text}
      </span>
      <button
        onClick={() => onDelete(todo.id)}
        className="px-3 py-1 text-red-500 hover:text-red-700"
      >
        刪除
      </button>
    </div>
  );
}

建立 TodoList.tsx…(繼續其他組件)


### 第 4 步:使用 Test-Driven Development Skill 增加測試

**觸發**:

使用 test-driven-development skill 為 Todo 應用寫測試


**AI 回應摘要**:

TDD 開發流程

紅燈 1:新增功能測試

describe('TodoList', () => {
  it('should add new todo', () => {
    // 測試新增功能
  });

  it('should toggle todo completion', () => {
    // 測試切換功能
  });

  it('should delete todo', () => {
    // 測試刪除功能
  });
});

紅燈 2:實作最小可行程式碼

實作剛好能通過測試的程式碼…

紅燈 3:重構和優化

在測試保護下重構程式碼…


### 第 5 步:使用 Verification Before Completion Skill 驗證

**觸發**:

使用 verification-before-completion skill 驗證 Todo 應用的實作結果


**AI 回應摘要**:

驗證結果

✅ 功能驗證

  • 新增功能:正常運作 ✓
  • 刪除功能:正常運作 ✓
  • 切換功能:正常運作 ✓
  • 本地儲存:資料正確保留 ✓

✅ 響應式設計驗證

  • Desktop 視圖:版面正常 ✓
  • Mobile 視圖:版面適配 ✓

✅ 程式碼品質

  • TypeScript 型別:無錯誤 ✓
  • 組件結構:清晰合理 ✓
  • 樣式組織:Tailwind CSS 正確使用 ✓

總結

Todo 應用已成功完成所有核心功能和驗收標準!


## 技術細節

### 專案結構

todo-app/ ├── src/ │ ├── components/ │ │ ├── TodoItem.tsx │ │ ├── TodoList.tsx │ │ ├── TodoInput.tsx │ │ └── types.ts │ ├── App.tsx │ ├── main.tsx │ └── vite-env.d.ts ├── public/ ├── index.html ├── package.json └── tsconfig.json


### 關鍵程式碼片段

**狀態管理**:
```typescript
const [todos, setTodos] = useState<Todo[]>([]);

const addTodo = (text: string) => {
  const newTodo: Todo = {
    id: Date.now(),
    text,
    completed: false,
  };
  setTodos([...todos, newTodo]);
};

本地儲存

useEffect(() => {
  localStorage.setItem('todos', JSON.stringify(todos));
}, [todos]);

學到的挑戰和解決方案

挑戰 1:TypeScript 型別定義

解決方案

interface Todo {
  id: number;
  text: string;
  completed: boolean;
}

挑戰 2:本地儲存的型別處理

解決方案

useEffect(() => {
  const saved = localStorage.getItem('todos');
  if (saved) {
    setTodos(JSON.parse(saved));
  }
}, []);

挑戰 3:響應式設計

解決方案

<div className="max-w-md mx-auto p-4">
  {/* Desktop 和 Mobile 都適用的設計 */}
</div>

學到的經驗

Superpowers 的優勢

  1. 系統化開發流程:從 brainstorming 到 verification 的完整流程
  2. 技能可組合性:根據需求靈活組合不同 skills
  3. 品質保證:TDD 和 verification 確保程式碼品質
  4. 持續驗證:每個階段都有明確的驗收標準

流程優化建議

對於類似 Todo 應用的專案,建議流程:

  1. 簡化 brainstorming:如果需求明確,可以跳過或縮短
  2. 加重 TDD:對於功能明確的專案,TDD 特別有效
  3. 早期 verification:不要等到最後才驗證,每完成一個組件就驗證

延伸學習

完成本範例後,您可以:

  1. 學習更多 Skills
  2. 探索其他工作流程
  3. 查看更多實戰範例

完整專案連結

您可以在以下位置查看完整的專案程式碼:

  • GitHub Repository:(專案程式碼連結)
  • Live Demo:(線上展示連結)

開始使用 Superpowers 來提升您的開發效率!