Contributing
Contributing to Ceres
Section titled “Contributing to Ceres”Thank you for considering contributing to Ceres! This document provides guidelines for contributing to the project.
Getting Started
Section titled “Getting Started”- Fork the repository
- Clone your fork:
git clone https://github.com/yourusername/ceres.git - Create a feature branch:
git checkout -b feature/your-feature-name - Make your changes
- Run tests:
cargo test - Commit your changes:
git commit -m "Add your feature" - Push to your fork:
git push origin feature/your-feature-name - Open a Pull Request
Development Setup
Section titled “Development Setup”# Start PostgreSQL with pgvectordocker compose up db -d
# Run migrationsmake migrate
# Run testscargo test
# Run with debug loggingRUST_LOG=debug cargo runCode Style
Section titled “Code Style”- Follow Rust standard formatting:
cargo fmt - Ensure clippy passes:
cargo clippy -- -D warnings - Write tests for new functionality
- Document public APIs with doc comments
Commit Messages
Section titled “Commit Messages”- Use clear, descriptive commit messages
- Start with a verb in imperative mood: “Add”, “Fix”, “Update”, “Remove”
- Reference issues when applicable: “Fix #123”
Pull Request Process
Section titled “Pull Request Process”- Update documentation for any changed functionality
- Ensure all tests pass
- Update the README.md if needed
- Your PR will be reviewed by maintainers
- Address any requested changes
- Once approved, your PR will be merged
Areas for Contribution
Section titled “Areas for Contribution”- Portal Types: Add support for new portal types via the
PortalClienttrait - Embeddings: Implement support for additional cloud or local embedding providers
- CLI: Improve user experience and add new commands
- Documentation: Improve guides, examples, and API docs
- Tests: Increase test coverage
- Bug fixes: Fix issues listed in GitHub Issues
Releasing
Section titled “Releasing”Releases are automated via GitHub Actions using git-cliff for changelog generation.
Automated Release Process
Section titled “Automated Release Process”-
Go to Actions > Prepare Release > Run workflow
-
Enter the version number (e.g.,
0.2.0) -
Optionally check “Dry run” to preview changes without committing
-
The workflow will:
- Generate
CHANGELOG.mdfrom conventional commits - Update version in
Cargo.toml - Commit and push the changes
- Generate
-
After the workflow completes, create and push the release tag:
Terminal window git pull && git tag vX.Y.Z && git push origin vX.Y.Z -
Monitor the Actions tab for the release workflow.
Local Changelog Preview
Section titled “Local Changelog Preview”To preview the changelog locally before releasing:
# Install git-cliffcargo install git-cliff
# Preview unreleased changesgit-cliff --unreleased
# Preview full changelog with a hypothetical new versiongit-cliff --tag v0.2.0Version Format
Section titled “Version Format”Only stable versions are supported: vX.Y.Z (e.g., v0.1.0, v1.0.0).
Questions?
Section titled “Questions?”Feel free to open an issue for questions or discussions about contributing.
Code of Conduct
Section titled “Code of Conduct”This project follows a Code of Conduct. Please be respectful and constructive in all interactions. We want Ceres to be a welcoming project for all contributors.