跳转到正文

为洛谷保存站做出贡献

主仓库:https://github.com/laikit-dev/luogu-saver

项目以 AGPL-3.0-or-later 许可证开源。提交贡献即表示你有权提交相关代码或内容,并接受仓库许可证和协作规则。

开始之前

  1. 阅读根目录 AGENTS.md
  2. 阅读中文或英文 README;
  3. 后端改动先定位并完整阅读相关 spec/*.spec.md
  4. 运行现有构建与测试,确认基线;
  5. 搜索 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

完整环境配置见从源代码构建

后端:规格先行

后端新增功能或可观察行为变化必须遵循:

  1. 把预期行为写成可测试、低歧义的英文规格;
  2. 将规格直接放在根目录 spec/,不创建子目录;
  3. 回读规格,确认输入、输出、状态和错误边界完整;
  4. 再修改实现;
  5. 完成后逐条核对规格与代码。

Bug 修复也不能跳过规格。如果规格正确,修实现;如果规格本身错误,先修规格再修实现。

前端

前端无需新增 spec 文件,但仍应:

  • 复用现有组件、主题变量和路由模块;
  • 同时验证桌面与移动布局;
  • 保持深色/浅色/自动模式一致;
  • 为可访问性提供标签、键盘行为和清晰状态;
  • 避免把敏感数据写入 localStorage、日志或 URL;
  • 对跨端功能核对相关后端规格。

注释与代码风格

只为非显然的推理、约束、不变量或权衡添加英文注释。不要写重复代码字面含义的注释。

提交前运行:

bash
npm run build
npm test
npm run lint:prettier
npm run lint:eslint

提交 Pull Request

  1. Fork 仓库并创建聚焦单一目标的分支;
  2. 说明问题、实现、验证结果和必要的迁移步骤;
  3. UI 改动附桌面与移动截图;
  4. 后端改动在同一个 PR 中包含对应规格;
  5. 不提交密钥、生产数据、构建缓存或无关格式化;
  6. 根据评审意见更新代码与规格。

Commit message 和 PR 描述只记录实际改动与验证,不添加 AI 产品署名、生成宣传语或虚构共同作者。

适合首次贡献的工作

  • 可复现的小型前端 Bug;
  • 文档与当前界面的差异;
  • 测试覆盖缺口;
  • 无行为变化的局部可读性改进;
  • 有明确规格和验收条件的 issue。

大型架构重写、数据迁移、权限模型和内容治理规则应先在 issue 中达成共识。

Luogu Saver 以 AGPL-3.0-or-later 许可证开源