# Vibe Coding 個人工具開發

你好，我是魚皮。

在上一篇文章中，我們學習了完整的 5 步開發流程。現在，是時候把這套流程真正用起來了！

這篇文章，我會帶你做 5 個實用的個人工具專案：個人作品集網站、待辦事項應用（進階版）、Markdown 筆記應用、番茄鐘計時器、天氣查詢應用。

需要先說明的是，本節教程更多的是做一個思路和專案開發流程的指導，目的是引導大家學會使用 Vibe Coding 開發專案的方法，需要大家自行動手實踐。如果你需要更完整的 Vibe Coding 圖文和視頻教程，可以看看魚皮的原創專案實戰部分。

下面這些專案都是我精心挑選的，實用性強，做出來真的能用，不是玩具。難度適中，適合新手練手，不會太難也不會太簡單。技術上涵蓋了前端、資料儲存、API 呼叫等常見場景，完成基礎版後還可以繼續新增新功能。更重要的是，這些專案都可以放到你的作品集裡，向別人展示你的能力。

每個專案我都會提供完整的開發指南，包括需求分析、技術選型、開發步驟和擴展思路。你可以根據自己的興趣選擇專案，不需要按順序完成。



## 一、專案實戰 - 個人作品集網站

個人作品集網站是展示你能力的最好方式。無論你是找工作、接私活，還是在社群媒體上分享你的作品，一個漂亮的作品集網站都能給你加分。而且，這個專案本身就是你的第一個作品，可以放到作品集裡展示，是不是很有意思？

這個網站要包含幾個部分：個人介紹（姓名、頭像、簡介、聯絡方式）、技能展示（你會哪些技術）、專案展示（你做過的專案，包括截圖、描述、連結）。介面要做響應式設計，在手機和電腦上都能正常顯示。

技術選型上，我們使用 React + TypeScript + Vite 作為前端框架，Tailwind CSS 來寫樣式，最後部署到 Vercel 上線。這套技術棧很現代，也是目前最流行的前端開發方案。

![](https://pic.yupi.icu/1/demoweb1.png)



### 開發步驟

1）需求研究

開發任何專案前，都要先做需求研究。你可以去看看別人的作品集網站是什麼樣的，比如在網上搜尋 "developer portfolio examples"，找找靈感。記錄下你喜歡的設計風格和功能，這些都可以作為你的參考。

2）寫 PRD 文件

有了靈感後，就要寫 PRD 文件了。建立一個 `PRD.md` 文件，明確你要展示哪些內容。下面是一個參考範例：

```markdown
# 個人作品集網站 PRD

## 核心功能
1. 首頁：大標題 + 簡介 + 頭像
2. 關於我：詳細介紹 + 技能列表
3. 專案展示：專案卡片列表，每個卡片包含專案名稱、專案截圖、簡短描述、技術棧、專案連結
4. 聯絡方式：郵箱、GitHub、社群媒體連結

## 設計要求
- 簡潔現代的設計風格
- 深色主題
- 流暢的滾動動畫
- 行動端適配
```

這個文件不需要寫得很複雜，把核心功能和設計要求說清楚就行。

3）寫技術設計文件

接下來寫技術設計文件 `TECH_DESIGN.md`。在這裡確定具體的技術方案：

```markdown
# 技術設計

## 技術棧
- React + TypeScript + Vite
- Tailwind CSS
- React Router（如果需要多頁面）
- Framer Motion（動畫效果）

## 專案結構
src/
  components/
    Header.tsx
    Hero.tsx
    About.tsx
    Projects.tsx
    Contact.tsx
    Footer.tsx
  data/
    projects.ts
    skills.ts
  App.tsx
  main.tsx

## 資料管理
- 專案資料和技能資料儲存在 TypeScript 文件中
- 使用陣列儲存，方便後續新增和修改
```

這個文件的作用是讓 AI 知道你要用什麼技術，專案結構是什麼樣的。

4）寫 AGENTS.md 文件

然後建立 `AGENTS.md` 文件，告訴 AI 開發規範：

```markdown
# 個人作品集網站開發指令

## 專案概述
使用 React + TypeScript + Tailwind CSS 開發的個人作品集網站。

## 開發規範
- 使用函數式元件 + Hooks
- 使用 Tailwind CSS 編寫樣式
- 元件要可複用
- 程式碼要有註釋

## 設計要求
- 深色主題（背景 #0a0a0a，文字 #ffffff）
- 使用漸變色作為強調色
- 新增平滑的滾動動畫
- 確保行動端適配

## 注意事項
- 保持設計簡潔，不要過度設計
- 效能優化：圖片使用懶加載
- 確保所有連結可點擊
```

這個文件是給 AI 的開發規範，讓它知道程式碼要怎麼寫，設計要什麼風格。

5）開始開發

有了這三個文件，就可以開始開發了。打開 Cursor 等 AI 程式碼編輯器，開始和 AI 對話。

第一個提示詞是初始化專案：

```
請根據 PRD.md、TECH_DESIGN.md 和 AGENTS.md 的要求，初始化一個 React + TypeScript + Vite 專案，並安裝 Tailwind CSS。
```

這個提示詞很簡單，但包含了所有必要的資訊。AI 會讀取這三個文件，然後按照要求建立專案結構，安裝依賴，配置 Tailwind CSS。

然後逐步實現每個元件。比如建立 Hero 元件：

```
建立 Hero 元件，包含大標題、簡介和頭像。使用 Tailwind CSS 實現深色主題和漸變色效果。
```

這個提示詞告訴 AI 要建立什麼元件，包含哪些內容，用什麼技術實現。AI 會產生完整的元件程式碼。

接著建立 Projects 元件：

```
建立 Projects 元件，展示專案列表。每個專案卡片包含截圖、標題、描述和技術棧標籤。
```

就這樣一步一步，完成整個網站。每完成一個元件，就在瀏覽器中預覽一下效果，確保符合預期。

6）部署上線

開發完成後，就可以部署上線了。部署的流程很簡單：

- 把程式碼推送到 GitHub
- 登入 Vercel，匯入 GitHub 倉庫
- 點擊部署，等待完成
- 獲得你的網站連結

Vercel 會自動檢測你的專案類型，配置建構命令，非常智慧。部署完成後，你就有了一個可以存取的網站連結，可以分享給別人看。



### 擴展思路

基礎版完成後，你還可以繼續擴展功能。比如新增部落格功能，寫文章分享你的學習經驗；新增深色/淺色主題切換，讓使用者可以選擇喜歡的主題；支援多語言，吸引國際使用者；新增存取統計，了解網站存取情況；甚至可以加個留言板功能，讓訪客可以給你留言。



## 二、專案實戰 - 待辦事項應用（進階版）

完成了作品集網站後，讓我們來做一個功能更複雜的專案。在快速上手部分，我們做過一個簡單的待辦事項應用，只有最基本的新增和刪除功能。現在，讓我們做一個功能更強大的版本，學習如何處理更複雜的業務邏輯。

這個進階版的功能要豐富得多。新增待辦事項時，除了標題，還可以設定描述、截止日期、優先級、分類。檢視列表時，支援按分類、優先級、狀態篩選，還有搜尋功能可以快速找到特定的待辦事項。當然也支援編輯和刪除。資料用 LocalStorage 儲存，重新整理頁面不會遺失。另外還有統計功能，顯示完成率、待辦數量等。

技術選型上，前端用 React + TypeScript + Vite，狀態管理用 Zustand（一個輕量級的狀態管理庫，比 Redux 簡單很多），樣式用 Tailwind CSS，日期處理用 date-fns，資料儲存用 LocalStorage。

![](https://pic.yupi.icu/1/demoweb2.png)



### 開發步驟

1）定義資料模型

開發的第一步是定義資料模型。你需要明確待辦事項包含哪些欄位：id（唯一標識）、title（標題）、description（描述）、category（分類）、priority（優先級：低、中、高）、dueDate（截止日期）、completed（是否完成）、createdAt（建立時間）。把這些欄位定義清楚，後面的開發就會很順暢。

2）按功能模組開發

然後按功能模組來開發。建議的順序是：先實現資料儲存層，封裝 LocalStorage 的讀寫操作；再實現狀態管理，用 Zustand 建立全域 store；然後實現新增功能；接著實現列表展示和篩選；最後實現搜尋和統計。這樣循序漸進，每完成一個模組就測試一下，確保正常工作。

和 AI 對話時，可以這樣說：

```
建立 Todo 資料模型和 LocalStorage 工具函數。
```

AI 會幫你定義資料結構和封裝儲存操作。這個提示詞雖然簡單，但 AI 知道要做什麼，因為它會參考你的 PRD 和技術設計文件。

然後說：

```
使用 Zustand 建立全域狀態管理，包括新增、刪除、更新、篩選等方法。
```

AI 會建立一個完整的 store，包含所有需要的方法。Zustand 是一個很輕量的狀態管理庫，比 Redux 簡單很多，但功能足夠強大。

接著說：

```
建立 AddTodo 元件，包含表單輸入和驗證。
```

AI 會實現新增功能的介面和邏輯，包括輸入框、下拉選擇、日期選擇器等。每完成一個功能，就測試一下，確保正常工作。



### 關鍵技術點

這個專案有幾個關鍵的技術點需要注意。首先是狀態管理，因為功能比較多，用 Zustand 來管理全域狀態會方便很多。你可以讓 AI 幫你建立一個 store，包含新增、刪除、更新、篩選等方法。

篩選功能要支援多條件篩選，比如同時按分類和優先級篩選。搜尋功能要支援模糊搜尋，在標題和描述中查找關鍵詞。這些邏輯都可以讓 AI 幫你實現，你只需要告訴它具體的需求就行。



### 擴展思路

基礎版完成後，還可以繼續擴展。比如新增標籤功能，讓待辦事項可以打多個標籤；支援子任務，一個大任務可以分解成多個小任務；新增提醒功能，到期前自動提醒；支援資料匯出為 CSV；甚至可以用 Firebase 實現雲端同步。



## 三、專案實戰 - Markdown 筆記應用

掌握了狀態管理和資料篩選後，我們來學習如何處理文字編輯和即時預覽。Markdown 是程式設計師最常用的文件格式，做一個 Markdown 筆記應用可以讓你學習如何處理文字編輯、即時預覽等功能。

這個專案要實現一個完整的 Markdown 筆記應用。使用者可以建立筆記，輸入標題和內容。介面採用左右分欄，左側是編輯器，右側即時預覽渲染後的效果。左側還要顯示筆記列表，支援搜尋。資料儲存在 LocalStorage，支援刪除筆記。程式碼區塊要有語法高亮，這樣看起來更專業。

技術選型上，前端用 React + TypeScript + Vite，Markdown 解析用 react-markdown，程式碼高亮用 react-syntax-highlighter，樣式用 Tailwind CSS，資料儲存用 LocalStorage。

![](https://pic.yupi.icu/1/demoweb3.png)



### 開發步驟

1）實現基礎佈局

開發的第一步是實現基礎佈局，建立左右分欄的佈局，左側是編輯器，右側是預覽區。這個佈局用 Tailwind CSS 的 Flex 或 Grid 很容易實現。

可以這樣告訴 AI：

```
建立左右分欄佈局，左側是 Markdown 編輯器（大文字框），右側是預覽區。使用 Tailwind CSS 實現響應式佈局。
```

AI 會建立一個美觀的分欄佈局，在電腦上是左右分欄，在手機上會自動變成上下佈局。

2）整合 Markdown 解析

然後整合 Markdown 解析。使用 react-markdown 這個庫，可以很方便地將 Markdown 文字轉換為 HTML。你只需要把文字傳給這個元件，它就會自動渲染。

告訴 AI：

```
使用 react-markdown 將 Markdown 文字轉換為 HTML，在預覽區顯示渲染後的效果。
```

這個提示詞很簡潔，但 AI 知道要做什麼。它會安裝 react-markdown 庫，匯入元件，然後在預覽區使用。

3）實現即時預覽

接下來實現即時預覽。這個功能的關鍵是監聽編輯器的輸入變化，即時更新預覽區。當使用者在左側編輯時，右側要同步顯示渲染後的效果。

告訴 AI：

```
監聽編輯器的輸入變化，即時更新預覽區。使用者在左側編輯時，右側同步顯示 Markdown 渲染後的效果。
```

這個功能用 React 的狀態管理很容易實現。AI 會把編輯器的內容儲存在 state 中，然後傳給預覽元件，每次內容變化都會自動更新預覽。

4）新增程式碼高亮

程式碼高亮也很重要，讓程式碼區塊看起來更專業。告訴 AI：

```
配置 react-syntax-highlighter，讓程式碼區塊支援語法高亮。支援多種程式語言，比如 JavaScript、Python、Java 等。
```

AI 會配置 react-syntax-highlighter，當 Markdown 中有程式碼區塊時，會用語法高亮來渲染，不同的語法元素會顯示不同的顏色。

5）新增筆記管理功能

最後新增筆記管理功能。告訴 AI：

```
實現筆記管理功能：
- 左側新增筆記列表，顯示所有筆記的標題
- 點擊筆記可以切換到該筆記
- 支援建立新筆記、刪除筆記
- 支援搜尋筆記（按標題搜尋）
- 資料儲存在 LocalStorage
```

這個提示詞包含了所有的功能要求，AI 會一次性實現所有功能。



### 關鍵技術點

這個專案的關鍵是實現 Markdown 的即時預覽。當使用者在左側編輯時，右側要即時顯示渲染後的效果。這個功能用 react-markdown 庫可以很容易實現。

程式碼高亮也很重要，可以讓 AI 幫你配置 react-syntax-highlighter，支援多種程式語言的語法高亮。為了更好的使用者體驗，可以讓 AI 新增一些優化，比如 Tab 鍵插入空格而不是切換焦點，支援 Ctrl+B 加粗等快捷鍵，自動儲存草稿等。



### 擴展思路

基礎版完成後，可以繼續擴展功能。比如支援圖片上傳，讓筆記可以插入圖片；新增目錄導航，自動產生文章大綱；支援匯出為 PDF，方便分享；新增主題切換，提供多種編輯器主題；支援多種 Markdown 風格，比如 GitHub 風格、標準風格等。



## 四、專案實戰 - 番茄鐘計時器

前面的專案都是資料展示和管理，現在讓我們做一個涉及定時器和通知的專案。番茄工作法是一種流行的時間管理方法，做一個番茄鐘應用可以讓你學習如何處理定時器、通知等功能。

番茄工作法的原理是工作 25 分鐘，休息 5 分鐘，這樣循環進行。這個應用要實現倒計時功能，支援開始、暫停、重置。使用者可以自訂工作和休息的時長。時間到了要發出通知提醒，還可以播放提示音。另外還要有統計功能，記錄完成的番茄鐘數量，幫助使用者了解自己的工作效率。

技術選型上，前端用 React + TypeScript + Vite，樣式用 Tailwind CSS，通知用瀏覽器自帶的 Notification API，資料儲存用 LocalStorage。

![](https://pic.yupi.icu/1/demoweb4.png)



### 開發步驟

1）實現倒計時邏輯

開發的核心是實現倒計時邏輯。告訴 AI：

```
實現番茄鐘倒計時功能：
- 預設工作 25 分鐘，休息 5 分鐘
- 支援開始、暫停、重置
- 時間格式顯示為 MM:SS
- 倒計時結束時觸發提醒
```

這個提示詞清楚地說明了要實現什麼功能。AI 會用 JavaScript 的 setInterval 來實現倒計時，每秒減 1，到 0 時觸發提醒。

2）實現通知功能

然後實現通知功能。瀏覽器的 Notification API 可以傳送系統通知，但需要先請求使用者權限。告訴 AI：

```
實現瀏覽器通知功能：
- 頁面載入時請求通知權限
- 倒計時結束時傳送通知
- 通知標題是"番茄鐘"，內容是"時間到了，該休息了！"
```

這個提示詞說明了通知的觸發時機和內容。AI 會先檢查瀏覽器是否支援通知，然後請求權限，最後在時間到了的時候傳送通知。

3）新增音效

還可以新增音效。時間到了播放一個提示音，這樣即使用戶沒看螢幕也能知道時間到了。告訴 AI：

```
新增提示音功能：
- 準備一個提示音文件（放在 public 目錄）
- 倒計時結束時播放提示音
```

AI 會用 Audio 物件來播放音訊文件。

4）新增統計功能

最後新增統計功能。告訴 AI：

```
實現統計功能：
- 記錄完成的番茄鐘數量
- 顯示今日完成數量、本週完成數量
- 資料儲存在 LocalStorage
```

這樣使用者可以看到自己的工作效率，更有成就感。



### 關鍵技術點

這個專案的核心是倒計時邏輯和通知功能。倒計時要準確，每秒減 1，不能有誤差。通知功能需要先請求使用者權限，如果使用者拒絕了權限，要給出友好的提示。

為了更好的使用者體驗，可以在計