Thank you for your interest in contributing to Forky. This guide will help you get started.
By participating in this project, you agree to maintain a respectful and collaborative environment. Be kind to other contributors.
- Check if the bug has already been reported in Issues
- Create a new issue with:
- Descriptive title
- Steps to reproduce the problem
- Expected vs actual behavior
- Operating system and version
- Screenshots if applicable
- Open an issue describing the improvement
- Explain the use case and why it would be useful
- If possible, describe how you would implement it
- Rust (stable)
- Node.js (v18+)
- pnpm or npm
- Tauri dependencies for your operating system:
- Linux:
sudo apt install libwebkit2gtk-4.1-dev build-essential curl wget file libssl-dev libayatana-appindicator3-dev librsvg2-dev - macOS: Xcode Command Line Tools
- Windows: Visual Studio Build Tools, WebView2
- Linux:
# Clone the repository
git clone https://github.com/YOUR_USERNAME/forky.git
cd forky
# Install dependencies
npm install
# Verify everything works
npm run tauri dev-
Fork the repository
-
Create a branch from
main:git checkout -b feature/my-new-feature # or git checkout -b fix/bug-i-am-fixing -
Make your changes following project conventions
-
Verify the code:
# Frontend npm run lint npm run type-check # Backend cd src-tauri cargo fmt --check cargo clippy cargo test
-
Commit with descriptive messages:
git commit -m "[TYPE] Brief description"Types:
FEATURE,FIX,REFACTOR,DOCS,TEST,CHORE -
Push to your fork:
git push origin feature/my-new-feature
-
Open a Pull Request to
main
- Format with
cargo fmt - No warnings from
cargo clippy - snake_case for functions and variables
- PascalCase for structs and enums
- Document public functions with
///
- Format with Prettier (configured in the project)
- PascalCase for components
- camelCase for functions and variables
- Explicit types, avoid
any
- Use existing CSS variables in
src/styles/global.css - BEM or descriptive class names
- One CSS file per component
- Prefix with type in brackets:
[FEATURE],[FIX], etc. - First line maximum 72 characters
- Detailed description if necessary
- Describe what your PR does and why
- Reference related issues (#123)
- Include screenshots for UI changes
- Make sure all checks pass
- One PR = one feature or fix
forky/
├── src/ # React frontend
│ ├── components/ # UI components
│ ├── hooks/ # Custom hooks
│ ├── types/ # TypeScript definitions
│ └── styles/ # Global styles
├── src-tauri/ # Rust backend
│ └── src/
│ └── git/ # Git logic
└── .github/workflows/ # CI/CD
See CLAUDE.md for more technical details.
- A maintainer will review your PR
- They may request changes or clarifications
- Once approved, it will be merged to
main - Your contribution will appear in the next release
Look for issues labeled with:
good first issue- Ideal for getting startedhelp wanted- Need community help
If you have questions, open a Discussion or ask in the comments of an existing PR.
Thank you for contributing to Forky.