外观主题
阅读语言

DOCPI —— 本地运行的开发文档公示与协作系统

软件 本站软件 3天前 更新于 21小时前
https://yxp.hk/p/WHLHid

📦 开源仓库:yxpil/DOCPI


DocPI · 开发文档公示软件

一个本地运行的开发文档公示系统,三级层级结构 项目 → 文件夹(可嵌套)→ 文档,支持 Markdown 渲染、全文搜索、左右分栏布局、登录鉴权与文件夹级权限控制,数据存储在 SQLite。

功能特性

  • 📁 三级结构:项目 (Project) → 文件夹 (Folder,支持任意嵌套) → 文档 (Document)
  • 📝 Markdown 支持:标题、列表、代码块、表格、引用、图片等完整渲染
  • 🔍 全文搜索:可搜索文档标题、正文、价格、仓库地址、文件夹名、项目名
  • 🖥️ 左右布局:左侧树形导航 + 搜索,右侧文档查看/编辑
  • 🔐 登录鉴权:账号密码登录 + 图形验证码,会话 7 天有效
  • 👥 权限控制:管理员/工程师角色,文件夹级授权(含祖先继承),API Token 供 AI 调用
  • 🗄️ SQLite 存储:rusqlite(bundled,零外部依赖),WAL 模式
  • ♻️ 级联删除:删除项目/文件夹时自动删除其下所有内容
  • 🖼️ 文件上传:base64 上传,支持头像与附件

技术栈

  • 后端:Rust + axum + rusqlite(bundled SQLite)
  • 前端:TypeScript + 原生 ES Module(无框架)+ marked.js(Markdown)+ Tailwind(CDN)
  • 构建:前端用 esbuild 转译

目录结构

DocPI/
├── server/                # Rust 后端
│   ├── Cargo.toml
│   └── src/
│       ├── main.rs        # 入口:axum 服务 + 静态前端
│       ├── lib.rs         # 库根
│       ├── config.rs      # 配置(环境变量覆盖)
│       ├── db.rs          # 建表 + 初始管理员
│       ├── security.rs    # scrypt 密码哈希、token
│       ├── captcha.rs     # 图形验证码(点阵字体 PNG)
│       ├── auth.rs        # 登录态提取 + 权限判断
│       ├── state.rs       # 共享状态
│       ├── routes/        # auth / projects / settings / upload 路由
│       └── bin/seed.rs    # 示例数据填充
├── frontend/              # TypeScript 前端源码 + esbuild 构建
│   ├── src/*.ts
│   ├── build.mjs
│   ├── tsconfig.json
│   └── package.json
├── public/                # 前端静态资源(Rust 直接 serve,js/ 由 frontend 构建产出)
│   ├── index.html
│   ├── css/
│   ├── js/
│   └── vendor/
├── scripts/test.js        # 接口自动化测试(41 项断言,Node 运行)
├── data/                  # SQLite 数据库(自动创建,已 gitignore)
└── .gitignore

运行方法

后端(Rust)

cd server
cargo build --release   # 或 cargo ru