Markdown 服务端渲染:GFM、脚注、目录锚点、自定义指令白名单
Shiki 服务端语法高亮,light/dark 双主题一次生成
KaTeX 数学公式、Mermaid 图表(内联 SVG,无客户端运行时)
文章修订历史、乐观锁、软删除
定时发布:到点由调度容器触发,事务锁保证不重复发布
分类、标签、系列(专栏)三套组织维度,历史 URL 自动 301
媒体库:上传自动检测真实格式,HEIC 转 WebP,SVG 经消毒后才落盘
PGroonga 驱动的中文全文搜索
RSS、sitemap、robots 自动生成
双语界面
前台中英双语,两个语言各 411 条字典
中文地址不带前缀(/posts/…),英文走 /en
语言只由 URL 前缀和显式切换决定,不做 Accept-Language 自动跳转——那会让爬虫拿到非预期语言,也会让同一条分享链接在不同人那里显示不同语言
文章正文保持中文,在英文外壳里标注 lang="zh-CN",浏览器因此只对该翻的部分提示翻译
双向对称的 hreflang 加 x-default,sitemap 同时输出两个语言
分类/标签/系列名可填英文,留空回退中文而不是显示空标签
账号与安全
邮箱密码登录 + GitHub OAuth
注册走「先验邮箱再建号」两段式,验证前不写入用户表
TOTP 两步验证,含二维码绑定与一次性恢复码
会话注册表:多设备可见、可单独撤销
Argon2id 密码哈希(参数可配),自动升级历史 bcrypt 哈希
常见弱密码与账户信息相似度拦截
登录/注册/重置密码分别限流(Redis),验证邮件 60 秒重发冷却
新设备登录安全提醒邮件
审计日志
点击空白处退出提示









评论