面向对象与背景
项目面向机器人企业官网的内容运营人员、研发团队与访问开发者。管理员需要持续维护科研项目和开源仓库,但原网站内容写在前端脚本中,每次更新都依赖修改代码和重新发布。
需要解决的问题
在不改变现有官网视觉界面的前提下,需要将静态内容升级为可管理的数据:公开访客只能读取已发布内容,管理员登录后才能增删改查,同时保证账号密码、数据库凭据和登录状态的安全。
项目目标
- 保留既有官网界面,通过 API 动态展示已发布的科研项目与开源仓库。
- 提供独立的 /admin/ 管理后台,让非开发人员可以维护和发布内容。
- 建立公开读取与后台管理两套权限边界,并安全保存管理员账号。
设计约束
- 原有网站界面和访问路径需要保持稳定,升级不能破坏前台体验。
- 数据库密码、JWT 密钥等敏感配置只能保存在服务端环境变量中。
- 旧 script.js 中的内容需要一次性迁移,避免重复导入。
搭建的逻辑框架
- 以 Node.js 与 Express 作为统一后端,同时提供官网静态文件、管理后台静态文件和 REST API。
- Supabase PostgreSQL 使用 projects、open_source_repositories 和 users 三类数据表,分别保存官网内容与管理员账户。
- 前台通过 /api/public/* 仅读取已发布内容;后台通过 /api/admin/* 在登录后完成新增、编辑、发布和删除。
- 管理员密码仅保存 bcrypt 哈希,JWT 管理登录状态;生产环境启用 HTTPS-only Cookie。
- 通过 db:init 初始化数据表,content:migrate 迁移旧内容,admin:create 创建首个管理员。
使用价值
- 将写死在前端代码中的项目内容转化为可持续维护的内容管理流程。
- 运营人员无需修改源代码,即可在后台完成项目和开源仓库的发布管理。
- 公开接口、管理接口和数据库凭据相互隔离,降低误发布与敏感信息泄露风险。
- 系统可作为企业技术官网、实验室项目主页或开源社区门户的基础内容平台。
项目总结
- 在既有网站上增加后台能力时,保持前台契约稳定比重写界面更有业务价值。
- 内容迁移、权限隔离和生产环境配置必须与页面功能一起设计,而不是部署前再补充。
