今天给博客加了一套域名和备案管理功能,从一个纯博客系统升级成了轻量管理面板。
做了什么
域名管理
- 增删改查完整 CRUD
- 按域名搜索、按状态筛选
- 到期日期自动标色:红色=已过期,黄色=30天内到期
- 批量导入(JSON)和导出(CSV / JSON)
备案管理
- 支持个人/企业两种备案类型
- 四种状态跟踪:未备案、审核中、已通过、已注销
- 备案通过后,备案号自动显示在网站底部
仪表盘
- 文章、域名、备案总数一目了然
- 预警区:域名到期提醒 + 备案审核中提醒
- 即将过期和已过期的域名分别用黄色和红色标注
其他
- 操作日志:每次增删改都自动记录,最多保留500条
- 批量导入导出:域名和备案都支持 JSON 导入、CSV/JSON 导出
- 移动端适配:手机上自动切换为卡片布局,按钮全宽好点
- 全局深色主题,和博客风格统一
技术栈
没引入新依赖,全靠现有的 Express + EJS + JSON 文件存储:
/root/blog/
├── server.js # 所有 API 和页面路由
├── data-manager.js # 数据读写和日志工具
├── data/
│ ├── domains.json # 域名数据
│ ├── filings.json # 备案数据
│ └── logs.json # 操作日志
└── views/admin/
├── dashboard.ejs # 仪表盘
├── domains.ejs # 域名管理
├── filings.ejs # 备案管理
└── logs.ejs # 操作日志
API 接口一览
域名:
GET /api/domains— 列表(支持 search/status 筛选)POST /api/domains— 添加PUT /api/domains/:id— 更新DELETE /api/domains/:id— 删除POST /api/domains/import— 批量导入GET /api/domains/export?format=csv— 导出
备案:
GET /api/filings— 列表(支持 status/domain 筛选)POST /api/filings— 添加PUT /api/filings/:id— 更新DELETE /api/filings/:id— 删除POST /api/filings/import— 批量导入GET /api/filings/export?format=csv— 导出
其他:
GET /api/dashboard— 仪表盘统计和预警数据GET /api/logs— 操作日志
感悟
本来是个博客,写着写着就变成管理后台了。不过这种"一个入口管所有"的方式确实方便,不用再开好几个后台。
数据用 JSON 文件存的,够用就行,量大了再换 SQLite。