mirror of
https://github.com/samvallad33/vestige.git
synced 2026-04-25 00:36:22 +02:00
FSRS-6 spaced repetition, spreading activation, synaptic tagging, hippocampal indexing, and 130 years of memory research. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
137 lines
3.3 KiB
Markdown
137 lines
3.3 KiB
Markdown
# Contributing to Vestige
|
|
|
|
Thank you for your interest in contributing to Vestige! This document provides guidelines and information to help you get started.
|
|
|
|
## Project Overview
|
|
|
|
Vestige is a Tauri-based desktop application combining a Rust backend with a modern web frontend. We welcome contributions of all kinds—bug fixes, features, documentation, and more.
|
|
|
|
## Development Setup
|
|
|
|
### Prerequisites
|
|
|
|
- **Rust** (stable, latest recommended): [rustup.rs](https://rustup.rs)
|
|
- **Node.js** (v18 or later): [nodejs.org](https://nodejs.org)
|
|
- **pnpm**: Install via `npm install -g pnpm`
|
|
- **Platform-specific dependencies**: See [Tauri prerequisites](https://tauri.app/v1/guides/getting-started/prerequisites)
|
|
|
|
### Getting Started
|
|
|
|
1. Clone the repository:
|
|
```bash
|
|
git clone https://github.com/samvallad33/vestige.git
|
|
cd vestige
|
|
```
|
|
|
|
2. Install frontend dependencies:
|
|
```bash
|
|
pnpm install
|
|
```
|
|
|
|
3. Run in development mode:
|
|
```bash
|
|
pnpm tauri dev
|
|
```
|
|
|
|
## Running Tests
|
|
|
|
```bash
|
|
# Run Rust tests
|
|
cargo test
|
|
|
|
# Run with verbose output
|
|
cargo test -- --nocapture
|
|
```
|
|
|
|
## Building
|
|
|
|
```bash
|
|
# Build Rust backend (debug)
|
|
cargo build
|
|
|
|
# Build Rust backend (release)
|
|
cargo build --release
|
|
|
|
# Build frontend
|
|
pnpm build
|
|
|
|
# Build complete Tauri application
|
|
pnpm tauri build
|
|
```
|
|
|
|
## Code Style
|
|
|
|
### Rust
|
|
|
|
We follow standard Rust conventions enforced by `rustfmt` and `clippy`.
|
|
|
|
```bash
|
|
# Format code
|
|
cargo fmt
|
|
|
|
# Run linter
|
|
cargo clippy -- -D warnings
|
|
```
|
|
|
|
Please ensure your code passes both checks before submitting a PR.
|
|
|
|
### TypeScript/JavaScript
|
|
|
|
```bash
|
|
# Lint and format
|
|
pnpm lint
|
|
pnpm format
|
|
```
|
|
|
|
## Pull Request Process
|
|
|
|
1. **Fork** the repository and create a feature branch from `main`.
|
|
2. **Write tests** for new functionality.
|
|
3. **Ensure all checks pass**: `cargo fmt`, `cargo clippy`, `cargo test`.
|
|
4. **Keep commits focused**: One logical change per commit with clear messages.
|
|
5. **Update documentation** if your changes affect public APIs or behavior.
|
|
6. **Open a PR** with a clear description of what and why.
|
|
|
|
### PR Checklist
|
|
|
|
- [ ] Code compiles without warnings
|
|
- [ ] Tests pass locally
|
|
- [ ] Code is formatted (`cargo fmt`)
|
|
- [ ] Clippy passes (`cargo clippy -- -D warnings`)
|
|
- [ ] Documentation updated (if applicable)
|
|
|
|
## Issue Reporting
|
|
|
|
When reporting bugs, please include:
|
|
|
|
- **Summary**: Clear, concise description of the issue
|
|
- **Environment**: OS, Rust version (`rustc --version`), Node.js version
|
|
- **Steps to reproduce**: Minimal steps to trigger the bug
|
|
- **Expected vs actual behavior**
|
|
- **Logs/screenshots**: If applicable
|
|
|
|
For feature requests, describe the use case and proposed solution.
|
|
|
|
## Code of Conduct
|
|
|
|
We are committed to providing a welcoming and inclusive environment. All contributors are expected to:
|
|
|
|
- Be respectful and considerate in all interactions
|
|
- Welcome newcomers and help them get started
|
|
- Accept constructive criticism gracefully
|
|
- Focus on what is best for the community
|
|
|
|
Harassment, discrimination, and hostile behavior will not be tolerated.
|
|
|
|
## License
|
|
|
|
By contributing, you agree that your contributions will be licensed under the same terms as the project:
|
|
|
|
- **MIT License** ([LICENSE-MIT](LICENSE-MIT))
|
|
- **Apache License 2.0** ([LICENSE-APACHE](LICENSE-APACHE))
|
|
|
|
You may choose either license at your option.
|
|
|
|
---
|
|
|
|
Questions? Open a discussion or reach out to the maintainers. We're happy to help!
|