Kit - 書籤管理工具

2024/06 ~ 現在

全端開發
資料庫設計
Serverless
Cloudflare
進行中
精選

基於 React Router v7 + Cloudflare 的現代化書籤管理系統,支援多層級資料夾、標籤分類與拖曳排序

Kit - 書籤管理工具

採用技術

Remix (React Router v7)

全端 React 框架,處理 SSR 與 API 路由

Cloudflare Pages

Serverless 部署平台,邊緣運算零冷啟動

Cloudflare D1

Serverless SQLite 資料庫

Drizzle ORM

Type-safe 資料庫操作與 Migration 管理

shadcn/ui

基於 Radix UI 的高品質元件庫

Tailwind CSS

Utility-first CSS 框架

dnd-kit

拖曳排序功能實作

專案介紹

Kit 是一款自架式書籤管理工具,解決瀏覽器書籤管理混亂的痛點。透過 Workspace、Tab、Folder 三層架構搭配標籤系統,讓使用者能以直覺的方式整理大量網路資源。

全端架構部署於 Cloudflare Pages,搭配 D1 Serverless SQLite 資料庫,實現零伺服器維護成本與全球邊緣運算的快速存取體驗。

技術架構

前端

Remix (React Router v7) 為核心框架,搭配 shadcn/ui 元件庫與 Tailwind CSS 建構現代化介面。使用 Phosphor Icons 作為圖示系統,@dnd-kit 處理拖曳交互。

後端

執行於 Cloudflare Workers 邊緣運算環境,使用 Cloudflare D1 (SQLite) 作為資料庫,透過 Drizzle ORM 進行 Type-safe 的資料操作與 Migration 管理。

認證系統

自建 JWT 認證機制(jose),密碼使用 PBKDF2-SHA256(100,000 次迭代)進行雜湊,Cookie-based Session 管理,支援註冊白名單機制。

資料庫設計

使用 Cloudflare D1 (SQLite) 搭配 Drizzle ORM,涵蓋使用者、工作區、書籤內容、標籤系統與分享機制。

資料表 說明 關鍵欄位
users 使用者帳號 id, email, password_hash
workspaces 工作區(每位使用者可建立多個) id, user_id, title, sort_order
tabs 分頁(支援 folders / tags 兩種模式) id, workspace_id, title, type

API 設計

基於 Remix Action Handler 設計 RESTful 風格的 API 端點,透過 FormData 傳遞參數:

書籤管理 api.bookmarks

支援 CRUD、跨資料夾移動、批次排序更新

資料夾管理 api.folders

支援 CRUD、巢狀子資料夾、摺疊狀態切換

標籤系統 api.tags / api.tag-groups / api.bookmark-tags

標籤群組管理、標籤 CRUD、書籤標籤關聯操作

工作區與分頁 api.workspaces / api.tabs

多工作區切換、分頁模式管理(folders / tags)

分享系統 api.shares

產生唯讀分享連結、自訂短連結與額外按鈕