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 (Socrata, DCAT-AP) via the
PortalClienttrait - Embeddings: Implement alternative embedding providers (e.g., Ollama for local inference)
- 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”Please be respectful and constructive in all interactions. We want Ceres to be a welcoming project for all contributors.