为洛谷保存站做出贡献
主仓库:https://github.com/laikit-dev/luogu-saver
项目以 AGPL-3.0-or-later 许可证开源。提交贡献即表示你有权提交相关代码或内容,并接受仓库许可证和协作规则。
开始之前
- 阅读根目录
AGENTS.md; - 阅读中文或英文 README;
- 后端改动先定位并完整阅读相关
spec/*.spec.md; - 运行现有构建与测试,确认基线;
- 搜索 issue 和 PR,避免重复工作。
开发流程
bash
git clone https://github.com/laikit-dev/luogu-saver.git
cd luogu-saver
npm install
docker compose up -d
npm run dev完整环境配置见从源代码构建。
后端:规格先行
后端新增功能或可观察行为变化必须遵循:
- 把预期行为写成可测试、低歧义的英文规格;
- 将规格直接放在根目录
spec/,不创建子目录; - 回读规格,确认输入、输出、状态和错误边界完整;
- 再修改实现;
- 完成后逐条核对规格与代码。
Bug 修复也不能跳过规格。如果规格正确,修实现;如果规格本身错误,先修规格再修实现。
前端
前端无需新增 spec 文件,但仍应:
- 复用现有组件、主题变量和路由模块;
- 同时验证桌面与移动布局;
- 保持深色/浅色/自动模式一致;
- 为可访问性提供标签、键盘行为和清晰状态;
- 避免把敏感数据写入 localStorage、日志或 URL;
- 对跨端功能核对相关后端规格。
注释与代码风格
只为非显然的推理、约束、不变量或权衡添加英文注释。不要写重复代码字面含义的注释。
提交前运行:
bash
npm run build
npm test
npm run lint:prettier
npm run lint:eslint提交 Pull Request
- Fork 仓库并创建聚焦单一目标的分支;
- 说明问题、实现、验证结果和必要的迁移步骤;
- UI 改动附桌面与移动截图;
- 后端改动在同一个 PR 中包含对应规格;
- 不提交密钥、生产数据、构建缓存或无关格式化;
- 根据评审意见更新代码与规格。
Commit message 和 PR 描述只记录实际改动与验证,不添加 AI 产品署名、生成宣传语或虚构共同作者。
适合首次贡献的工作
- 可复现的小型前端 Bug;
- 文档与当前界面的差异;
- 测试覆盖缺口;
- 无行为变化的局部可读性改进;
- 有明确规格和验收条件的 issue。
大型架构重写、数据迁移、权限模型和内容治理规则应先在 issue 中达成共识。