Contributing
MemryLab is open source and welcomes contributions. Here is how to get started.
Development Setup
# Prerequisites
# - Rust 1.75+ (https://rustup.rs)
# - Node.js 18+ (https://nodejs.org)
# - Tauri prerequisites for your OS
# https://v2.tauri.app/start/prerequisites/
# Clone the repository
git clone https://github.com/laadtushar/MemryLab.git
cd MemPalace
# Install frontend dependencies
npm install
# Run in development mode (hot-reload for both Rust and React)
npm run tauri dev
# Run frontend only (useful for UI work)
npm run devAdding a New Import Source
Each import source is a Rust module in src-tauri/src/pipeline/ingestion/source_adapters/. To add a new one:
- Create a new file like
myplatform.rs - Implement the
SourceAdaptertrait - Register it in
mod.rs - Add detection logic so it auto-identifies the format
- Write tests with sample data
// Example adapter skeleton
use crate::domain::models::common::Entry;
use crate::pipeline::ingestion::source_adapters::SourceAdapter;
pub struct MyPlatformAdapter;
impl SourceAdapter for MyPlatformAdapter {
fn name(&self) -> &str {
"myplatform"
}
fn can_handle(&self, path: &Path) -> bool {
// Return true if this path looks like a MyPlatform export
// Check for characteristic files/structure
}
fn parse(&self, path: &Path) -> Result<Vec<Entry>> {
// Read and parse the export into Entry structs
// Each entry needs: content, timestamp, source name
}
}Code Style
- Rust: Follow standard Rust conventions.
cargo fmtandcargo clippymust pass. - TypeScript: Strict mode enabled. Use functional components with hooks. Prefer Zustand for state management.
- CSS: Tailwind utility classes only. No custom CSS files except globals.
- Commits: Use conventional commit messages (
feat:,fix:,docs:,refactor:).
What to Work On
Check the GitHub Issues for open tasks. Good first contributions include:
- Adding new import source adapters
- Improving parsing accuracy for existing adapters
- UI improvements and accessibility
- Documentation and examples
- Performance optimizations for large datasets
- Adding tests for untested modules
Pull Request Process
- Fork the repository and create a feature branch
- Make your changes with clear, descriptive commits
- Ensure
cargo build,cargo test, andcargo clippypass - Open a PR with a clear description of what changed and why
- Respond to review feedback
License
MemryLab is released under the MIT License. By contributing, you agree that your contributions will be licensed under the same terms.