Contributing to Cent 🚀
December 12, 2025 · View on GitHub
首先,非常感谢您有兴趣为 Cent 做出贡献!
Cent 是一个旨在打破服务器束缚的自由记账软件。我们需要您的帮助来让它变得更好。无论您是修复 Bug、改进文档,还是提出新功能,我们都热烈欢迎。
为了确保代码质量、维护项目的长期健康以及降低沟通成本,请在提交 Pull Request 或 Issue 之前仔细阅读本指南。
🌟 Cent 核心理念 (Core Philosophy)
Cent 与传统的 Web 应用架构不同,我们在设计上有两条不可逾越的原则。如果您希望为 Cent 贡献功能,请务必遵守:
1. Serverless First (无服务器依赖)
Cent 的目标是完全解耦后端。
- 原则: 在开发任何新功能时,必须首先确保该功能在没有服务器后端接口的情况下依然正常可用。
- 解释: Github 和 WebDAV 等同步端点仅用于数据的存储和备份,不应承载业务计算逻辑。
2. Sync Synergy (多端协同优先)
Cent 底层天然支持多用户、多设备协同。
- 原则: 在修改数据结构或添加功能时,必须考虑到多设备同步场景。
- 解释: 请确保您的代码逻辑处理了并发写入的情况,避免因同步机制导致的数据丢失。
🛠 开发规范 (Development Guidelines)
1. 环境准备
Cent 是一个 React SPA PWA 项目,使用pnpm作为包管理器。
# 安装依赖 (只能使用 pnpm )
pnpm install
# 启动开发服务器
pnpm run dev
2. 代码格式化与 Lint (Code Style)
我们使用 Biome 进行严格的代码格式化和 Lint 校验。
- ⚠️ 强制规则: 我们不接受任何未通过 Biome 校验的代码。
- 参差不齐的代码格式会带来极大的沟通成本,并可能导致合并冲突或潜在 Bug。
在提交代码前,请务必执行以下命令并确保无报错:
# 检查代码风格
pnpm run lint
# 自动修复格式问题
pnpm run check
3. 核心敏感区域 (Critical Zones)
以下目录包含 Cent 的核心同步引擎和数据层逻辑:
- 📂 src/api
- 📂 src/database
- 📂 src/tidal
修改规则:
- 涉及上述目录的修改必须经过严格验证。
- 必须确保向后兼容,严禁引入导致老版本客户端数据损坏的破坏性变更(Breaking Changes)。
- 在修改前,建议详细阅读项目文档中的【Cent 底层原理】(TODO)系列文章。
- 修改前请先提交 Issue 阐述修改思路,避免做无用功。
🔄 工作流 (Workflow)
- Issue First: 如果您计划开发新功能或进行大规模重构,请务必先提交一个 Issue 进行讨论。
- Branching: 基于 main 分支创建您的开发分支。
- 功能:feat/feature-name
- 修复:fix/bug-issue-number
- Commit: 推荐遵循 Conventional Commits 规范。
- feat: add webdav support
- fix: resolve sync data loss on ios
- Pull Request: 提交 PR 时,请关联相关的 Issue,并描述清楚您的变更内容和测试步骤。
- AI: 如果你使用大模型协助生成代码,请提交对应的提示词
🐛 Bug 报告
我们欢迎反馈 Bug,为了提高处理效率,请使用我们的 Bug Report Template。请务必提供:
- 准确的运行平台和操作系统。
- 使用的同步方式(WebDAV/Github/Local)。
- 可复现的步骤。
再次感谢您对开源社区的贡献!Happy Coding! 🎉