科技智趣坊的文档归档中心:仓库里的 content/ 目录就是站点数据源,放一篇 Markdown 进去就多一篇文档,不改代码、不重新构建
站点内容直接读 content/ 目录:新增、修改、删除一篇 .md 就等于上线/下架一篇文档,不需要改代码、不需要重新构建前端
content/public/ 免登录阅读,content/internal/ 需登录;鉴权在服务端强制,未登录访问内部文档一律返回 404,不暴露文档是否存在
SQLite FTS5 打底,自研中文分词注入(入库切单字 + 双字 + 三字,查询按双字取 AND);「合同」「玻璃」「端口」这类中文双字词也能命中,内置分词器做不到
按目录自动成树,父节点计数为后代累计;文档在 frontmatter 里声明标签,标签云与分类树都按当前用户可见性过滤
3D 玻璃拟态卡片叠加极光背景,深浅主题各自配色;代码块类名级高亮,主题切换后可读性不走样
PC 端「分类树 / 正文 / 目录(TOC)」三栏并排;手机端收成单栏,分类走抽屉,底部悬浮玻璃 Dock 切换页面
任意页面按下 ⌘K / Ctrl+K 唤起搜索面板,输入即搜,键盘上下选择、回车跳转,不用离开当前文档
Markdown 表格、任务列表、脚注照常渲染;代码块按语言语法高亮,```mermaid 图表按需懒加载,不拖慢首屏
从 smallgo 框架实例化,继承登录认证、飞牛 NAS 一键登录、用户权限、系统配置、备份恢复、审计日志与匿名统计
文档阁基于 smallgo 应用框架实例化,登录认证、飞牛 NAS 一键登录、用户权限、系统配置、备份恢复、审计日志、匿名统计、实时通道与定时任务全部继承框架,业务模块位于 server/docshub/(扫描、索引、检索、渲染)。
mattn/go-sqlite3 里默认不编译,构建时必须带 -tags sqlite_fts5,否则启动直接报 no such module: fts5。仓库里的 Makefile、Dockerfile、构建脚本、fnpack 与 CI 都已带上,手动 go build 时请自己补上。
techfunway-docs-hub 安装包(.fpk),安装向导里设置端口(默认 8501)techfunways/docs-hub,数据目录挂 docs-hub-data(容器内 /app/data),文档内容目录挂到 /app/content,git pull 更新内容即可data/deploy/ 下已备好示例配置从源码本地运行即可(首次启动会自动建索引,第一个注册的账号自动成为管理员):
# 1. 起后端(必须带 sqlite_fts5 构建标签) cd server go run -tags sqlite_fts5 . -content-dir ../content # 2. 另开一个终端起前端(自动把 /api 代理到 :8501) cd web npm install npm run dev # 打开 http://localhost:3000
content/public/<分类>/ 或 content/internal/<分类>/,头部补上 frontmatter(title / description / tags / author / date / order)即可。
-port 参数或 PORT 环境变量均可修改)
techfunway-docs-hub
docs-hub-data → 容器内 /app/data(数据库、上传文件、日志)
content/ → 容器内 /app/content(public/ 免登录,internal/ 需登录)
techfunway-docs-hub(桌面显示名「文档阁」)
docs-hub(暂未公开),Go + Gin + GORM + SQLite FTS5 / Vue 3 + TypeScript + Tailwind
smallgo,后端模块名为 smallgo/server
content/ 目录即站点数据源,放入 .md 即上线,不改代码、不重新构建content/public/ 免登录,content/internal/ 需登录;鉴权在服务端强制,未登录访问内部文档返回 404⌘K 搜索面板.fpk、Docker 镜像与二进制发行包均在准备中不用。站点直接读 content/ 目录,放一篇 .md 进去(或改一篇已有的),刷新页面就是最新内容,不需要改代码、不需要重新构建前端;后端启动时会自动建索引。
由所在目录决定:content/public/ 免登录阅读,content/internal/ 需登录。鉴权在服务端强制,未登录访问内部文档返回 404(而不是 403,避免暴露文档存在性),搜索、标签云与分类树统计也一律按可见性过滤。
SQLite FTS5 的内置分词器都不适合中文:unicode61 把整段汉字当一个词,trigram 以 3 个字符为最小单元,「合同」「玻璃」「端口」这类双字词实测命中 0 条。文档阁改用自研的中文 n-gram 注入——入库时切单字 + 双字 + 三字,查询按双字取 AND,双字词即可命中。
标准 Markdown:标题、表格、任务列表、脚注、代码块都能渲染;代码块按语言语法高亮,```mermaid 图表按需懒加载。元数据写在文件头部的 frontmatter 里(title / description / tags / author / date / order),分类由所在目录自动决定。
文档正文始终是仓库里的 Markdown 文件,站点不另存一份;账号、配置与检索索引保存在本地 SQLite 数据库(数据目录 data/),不上传云端。应用内置的匿名使用统计只上报版本与部署形态等设备信息,可在系统配置中关闭。