Thank you for your interest in contributing to EchoVault!
- mise (recommended) or Rust 1.70+, Node.js 24+, pnpm
- Git
git clone https://github.com/n24q02m/EchoVault
cd EchoVault
pnpm setupThis will install all dependencies including Rust toolchain, Node.js, and pnpm.
# Development mode with hot reload
cargo tauri dev
# Build production
cargo tauri build- Create a branch:
git checkout -b feature/your-feature - Make your changes
- Run checks:
cargo clippy && cargo fmt --check - Run tests:
cargo test --workspace - Lint frontend:
pnpm --filter web lint - Commit (Conventional Commits):
feat: add feature - Push to your fork:
git push origin feature/your-feature - Open a Pull Request
We use Conventional Commits:
| Type | Description |
|---|---|
feat |
New feature |
fix |
Bug fix |
docs |
Documentation changes |
style |
Code style (formatting, no logic) |
refactor |
Code refactoring |
perf |
Performance improvements |
test |
Adding or updating tests |
chore |
Maintenance tasks, dependencies |
ci |
CI/CD changes |
feat: add support for Claude extractor
fix: handle corrupted SQLite database gracefully
docs: update README with installation instructions
test: add integration tests for Cursor extractor
- Keep PRs focused on a single feature or fix
- Update documentation if needed
- Add tests for new functionality
- Ensure all checks pass
- Code follows Rust best practices
- All tests pass (
cargo test --workspace) - Clippy passes (
cargo clippy -- -D warnings) - Code is formatted (
cargo fmt --check) - Commit messages follow Conventional Commits
- Documentation updated (if needed)
Releases are automated using Semantic Release. We strictly follow the Conventional Commits specification to determine version bumps and generate changelogs automatically.
- Create a Pull Request with your changes.
- Ensure your commit messages follow the convention above.
- Merge the PR to
main. - The CI pipeline will automatically:
- Analyze the new commits
- Determine the next version number
- Generate release notes
- Update
CHANGELOG.md - Create a GitHub Release
- Build and publish Tauri app installers
You do not need to create manual tags or changelog entries.
- Format with
cargo fmt - Lint with
cargo clippy - Follow Rust API Guidelines
- Format and lint with Biome (
pnpm --filter web lint) - Use TypeScript strict mode
EchoVault/
├── apps/
│ ├── core/ # Core Rust library
│ │ ├── extractors/ # Chat extractors (Copilot, Cursor, Cline, Antigravity)
│ │ ├── storage/ # SQLite index and vault database
│ │ ├── sync/ # Rclone sync engine
│ │ └── utils/ # Utilities
│ ├── tauri/ # Tauri desktop app backend
│ └── web/ # React frontend
├── scripts/ # Development scripts
└── .github/ # CI/CD workflows
- Create a new file in
apps/core/src/extractors/ - Implement the
Extractortrait - Register in
apps/core/src/extractors/mod.rs - Add to
apps/tauri/src/commands.rs
See existing extractors for examples.
Feel free to open an issue for:
- Bug reports
- Feature requests
- Questions about the codebase
- Discussion about architecture
By contributing, you agree that your contributions will be licensed under the MIT License.
Thank you for contributing to EchoVault! 🎉