Welcome Contributors!
We appreciate contributions of all kinds to Obsidian Chess Studio. Whether you’re fixing bugs, adding features, improving documentation, or translating the app, your contributions are valuable.Before You Start
Check Existing Issues
Before starting work, check the issues page to see if:
- Someone else is already working on it
- There’s a discussion about the feature/bug
- Maintainers have provided guidance
Read the Documentation
Familiarize yourself with:
Development Workflow
1. Fork and Clone
2. Create a Feature Branch
Always create a new branch frommaster for your work:
feature/- New featuresfix/- Bug fixesrefactor/- Code refactoringdocs/- Documentation changestest/- Test additions/fixes
3. Install Dependencies
4. Make Your Changes
Now you can start coding! See the sections below for specific guidelines.Code Style
Frontend (TypeScript/React)
- Formatting
- Linting
- React Patterns
- State Management
Use Biome for code formatting:Settings:
- Indentation: 2 spaces
- Quotes: Double quotes
- Semicolons: Required
- Trailing commas: ES5
Backend (Rust)
- Formatting
- Linting
- Error Handling
- Tauri Commands
Use Settings:
rustfmt for formatting:- 4-space indentation
- 100-character line limit
- Trailing commas
Testing
Frontend Tests
Backend Tests
See Testing Guide for comprehensive coverage.Submitting a Pull Request
Commit Changes
Write clear commit messages:Commit message format:
feat:- New featurefix:- Bug fixrefactor:- Code refactoringdocs:- Documentation changestest:- Test additions/fixeschore:- Build/tooling changes
Create Pull Request
- Go to the comparison page
- Select your fork and branch in the
compare:dropdown - Click “Create pull request”
- Fill in the PR template:
- Title: Clear, descriptive title
- Description: What changes were made and why
- Testing: How you tested the changes
- Screenshots: For UI changes
- Related issues: Link to issues this PR addresses
PR Checklist
Before submitting, ensure:- Code builds successfully (
pnpm tauri build -b none) - All tests pass (
pnpm testandcargo test) - Code is formatted (
pnpm formatandcargo fmt) - No linting errors (
pnpm lint:fixandcargo clippy) - Commit messages follow convention
- PR description is clear and complete
- Screenshots included for UI changes
- Documentation updated if needed
Contributing Translations
See the dedicated Translations Guide for:- Adding new languages
- Updating existing translations
- Testing translations
- Translation workflow
Code Review Process
Feedback
You may receive:
- Requested changes - Required before merge
- Suggestions - Optional improvements
- Questions - Clarifications needed
Getting Help
If you need assistance:GitHub Discussions
Ask questions and get help from the community
Issues
Report bugs or request features
License
By contributing, you agree that your contributions will be licensed under the GPL-3.0 License.Next Steps
Development Overview
Learn about the tech stack
Testing Guide
Write comprehensive tests
Architecture
Understand the codebase
Translations
Help localize the app
