感谢你考虑为 William 学习规划系统做出贡献!
如果你发现了 bug,请创建一个 Issue,包含:
- 描述问题 - 清晰简洁地描述 bug
- 复现步骤 - 详细说明如何复现
- 期望行为 - 描述你期望发生什么
- 实际行为 - 描述实际发生了什么
- 截图 - 如果适用,添加截图帮助解释
- 环境 - 操作系统、Node.js 版本等
如果你有新功能的想法:
- 先在 Discussions 中讨论
- 说明功能的使用场景
- 等待维护者反馈后再开始开发
- Fork 仓库
- 创建分支:
git checkout -b feature/AmazingFeature - 编写代码: 遵循现有代码风格
- 测试: 确保功能正常工作
- 提交:
git commit -m 'Add some AmazingFeature' - 推送:
git push origin feature/AmazingFeature - 提交 PR: 填写 PR 模板
- 使用 ES6+ 语法
- 组件使用函数式组件 + Hooks
- 使用
const和let,避免var - 函数命名使用 camelCase
- 组件命名使用 PascalCase
- 使用 Tailwind CSS 类名
- 遵循 mobile-first 原则
- 保持响应式设计
feat:新功能fix:修复 bugdocs:文档更新style:代码格式(不影响功能)refactor:重构test:测试相关chore:构建/工具相关
# 克隆你的 fork
git clone https://github.com/your-username/william-learning-system.git
cd william-learning-system
# 安装依赖
cd backend && npm install
cd ../frontend && npm install
# 启动开发服务器
cd ../backend && npm run dev
# 另一个终端
cd frontend && npm run devwilliam-learning-system/
├── backend/ # 后端代码
│ ├── src/
│ │ ├── controllers/ # 控制器
│ │ ├── models/ # 数据模型
│ │ ├── routes/ # 路由
│ │ └── services/ # 服务
│ └── data/ # 数据库文件
├── frontend/ # 前端代码
│ └── src/
│ ├── components/ # 组件
│ ├── hooks/ # 自定义 Hooks
│ └── utils/ # 工具函数
└── README.md
再次感谢你的贡献!🎉