Skip to content

nightplumeaki/dudas

Repository files navigation

東川特別市聯合文件管理系統 · DUDAS

Dongchuan United Document Administration System —— 一個架在 Cloudflare 上的虛構政權文件管理系統, 涵蓋行政(市政府)、立法(立法院)、司法(法院、檢察院)、監察、考試等權力機關的文件查閱、編輯與管理。

技術棧

技術
前端 React 18 + Vite + React Router + TailwindCSS v4 + TipTap 編輯器
後端 Cloudflare Workers + Hono
數據庫 Cloudflare D1 (SQLite)
檔案存儲 Cloudflare R2
會話 Cloudflare KV
整合 @cloudflare/vite-plugin(一條命令本地全棧開發)

機關(9 個)

政府 · 立法院 · 法院 · 律政檢察署 · 廉政公署 · 外交事務署 · 龍東聯絡署 · 駐軍部隊 · 情報和地區安全對策局

功能

  • 公開閱覽 + 登錄管理:訪客可看公開已發布文件;登錄後依角色編輯/管理。
  • 本地上傳:docx / pdf / 圖片等上傳到 R2(≤25MB)。
  • 在線閱讀:原生文檔直接渲染;docx 用 mammoth 在瀏覽器轉 HTML 預覽;pdf 內嵌;原檔可下載。
  • 在線編輯:TipTap 富文本編輯原生文檔。
  • 文號自動化:建立/上傳時自動生成 {機關簡寫}{年份}-{序號}(每機關每年獨立遞增,例:立法2026-004;手動上傳亦計入)。
  • 一鍵範本:選範本生成新文件,填 {{占位符}} 後發布。
  • 用戶與權限:super_admin / organ_admin / member / viewer 四級角色;super/organ admin 可屬多機關。
  • 可見性:公開 / 非公開兩種;非公開文件由機關管理員逐用戶授權(per-user ACL)。
  • 篩選分類:左側 iTunes 來源列表選機關 + 類型 / 狀態 / 可見性 / 全文搜索。
  • 介面:早期 iTunes 拉絲金屬風;文件標題與正文採繁體中文新細明體。

本地開發

npm install
npm run db:init:local      # 建表
npm run db:seed:local      # 機關 / 類型 / 範本 等種子資料
npm run create-admin admin dudas-admin 系統管理員   # 建超級管理員
npm run dev                # http://localhost:5173

預設管理員:帳號 admin / 密碼 dudas-admin(登錄後請立即改密)。

部署到 Cloudflare(掛到你的域名)

需要先 npx wrangler login 授權你的 Cloudflare 帳號。

# 1. 建生產資源
npx wrangler d1 create dudas-db          # 把回傳的 database_id 填進 wrangler.jsonc
npx wrangler kv namespace create SESSIONS # 把回傳的 id 填進 wrangler.jsonc
npx wrangler r2 bucket create dudas-files

# 2. 初始化遠端數據庫
npm run db:init:remote
npm run db:seed:remote
node scripts/create-admin.mjs admin <強密碼> 系統管理員 --remote

# 3. 部署
npm run deploy

# 4. 綁定自訂域名
#    在 Cloudflare Dashboard → Workers & Pages → dudas → Settings → Domains & Routes
#    把你的域名(或子域)指向此 Worker。

目錄結構

db/            schema.sql / seed.sql / create-admin 產物
worker/        Hono 後端(index.ts + routes/ + auth.ts)
shared/        前後端共享類型
src/           React 前端(pages/ components/ auth.tsx api.ts)
wrangler.jsonc Cloudflare 綁定配置

已知取捨 / 後續可加強

  • docx 在線編輯:目前是「上傳→mammoth 轉 HTML 預覽/編輯→下載原檔」。複雜排版(頁眉頁腳、分欄)會在轉換中丟失。若需像素級保真,需自建 OnlyOffice/Collabora 文檔服務器(非 serverless)。
  • 編輯後導出回 .docx(html→docx)尚未實作。
  • 全文搜索目前用 SQL LIKE;資料量大後可改用 D1 FTS5(schema 已預留 documents_fts)。
  • 標籤、分類層級管理、操作日誌頁面、文件版本歷史可後續擴展。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published