Docs/Contributing

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 dev

Adding a New Import Source

Each import source is a Rust module in src-tauri/src/pipeline/ingestion/source_adapters/. To add a new one:

  1. Create a new file like myplatform.rs
  2. Implement the SourceAdapter trait
  3. Register it in mod.rs
  4. Add detection logic so it auto-identifies the format
  5. 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 fmt and cargo clippy must 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

  1. Fork the repository and create a feature branch
  2. Make your changes with clear, descriptive commits
  3. Ensure cargo build, cargo test, and cargo clippy pass
  4. Open a PR with a clear description of what changed and why
  5. 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.