Thank you for your interest in contributing to eDB! This document provides guidelines and instructions for contributing.
- Fork the repository and clone your fork locally.
- Set up the development environment:
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -e ".[dev]"- Run the tests to ensure everything works:
pytest- Create a feature branch from
main:git checkout -b feature/your-feature - Use descriptive branch names:
feature/,fix/,docs/,refactor/
- We use ruff for linting and formatting
- We use mypy for type checking
- Run both before submitting:
ruff check src/ tests/
ruff format src/ tests/
mypy src/edb/- Write tests for all new functionality
- Place unit tests in
tests/unit/ - Place integration tests in
tests/integration/ - Maintain test coverage above 80%
pytest --cov=edb --cov-report=htmlUse conventional commit format:
type(scope): description
feat(core): add TTL support to key-value store
fix(api): handle empty query body gracefully
docs(readme): update installation instructions
test(auth): add RBAC permission tests
- Ensure all tests pass and linting is clean
- Update documentation if your changes affect the public API
- Add a changelog entry in
CHANGELOG.md - Request review from at least one maintainer
- Squash commits before merging
- Use GitHub Issues for bug reports and feature requests
- Include reproduction steps, expected behavior, and actual behavior
- Tag issues appropriately:
bug,enhancement,documentation
See docs/architecture.md for the system design.
Key modules:
src/edb/core/— Storage engines (relational, document, key-value)src/edb/query/— Query parsing and planningsrc/edb/api/— REST API (FastAPI)src/edb/auth/— Authentication and RBACsrc/edb/security/— Encryption and audit loggingsrc/edb/ebot/— AI/NLP query interface
By contributing, you agree that your contributions will be licensed under the MIT License.