Getting Started
Before you begin contributing, please:- Read the architecture overview to understand the codebase
- Set up your development environment
- Familiarize yourself with the project structure and tech stack
Ways to Contribute
There are many ways to contribute to Praydo:- Report bugs - Submit detailed bug reports
- Suggest features - Propose new features or improvements
- Write code - Fix bugs or implement new features
- Improve documentation - Help improve or translate documentation
- Test - Test new features and report issues
Code Contributions
Development Workflow
Fork and clone
Fork the repository and clone it to your local machine:Replace
your-username with your GitHub username.Create a branch
Create a new branch for your changes:Use descriptive branch names:
feature/add-prayer-reminderfix/notification-timingdocs/update-readme
Make your changes
Make your changes following the coding standards below.
Commit your changes
Coding Standards
TypeScript/Svelte Guidelines
- Use TypeScript for all new code
- Follow existing patterns in the codebase
- Use Svelte 5 runes (
$state,$derived,$effect) for reactivity - Prefer composition over complex inheritance
- Keep components small and focused on a single responsibility
Example: Reactive State
Rust Guidelines
- Follow Rust conventions (use
cargo fmtandcargo clippy) - Document public APIs with doc comments
- Handle errors properly - avoid
unwrap()in production code - Use descriptive variable names
Example: Error Handling
Code Formatting
The project uses Prettier for automatic code formatting. Before committing:Commit Messages
Follow the Conventional Commits specification:Commit Types
feat:- New featurefix:- Bug fixdocs:- Documentation changesstyle:- Code style changes (formatting, etc.)refactor:- Code refactoringtest:- Adding or updating testschore:- Maintenance tasks
Examples
Testing
All contributions should include appropriate tests:Unit Tests
Write unit tests for new functionality using Vitest:Manual Testing
For UI changes, manually test:- Development mode (
pnpm tauri dev) - Production build (
pnpm tauri build) - On multiple platforms if possible (Windows, macOS, Linux)
Pull Request Guidelines
Before Submitting
Ensure your pull request:- Follows the coding standards
- Includes tests for new functionality
- Passes all existing tests (
pnpm test) - Passes type checking (
pnpm check) - Is properly formatted (
pnpm format) - Has a clear description of changes
- References any related issues
Pull Request Template
Reporting Bugs
When reporting bugs, please include:Bug Report Template
Feature Requests
When suggesting features, please:- Check existing issues to avoid duplicates
- Describe the problem you’re trying to solve
- Propose a solution with as much detail as possible
- Consider alternatives and explain why your solution is better
- Be open to discussion - features may be refined through community feedback
Documentation Contributions
Documentation improvements are always welcome:- Fix typos or unclear explanations
- Add examples or tutorials
- Translate documentation to other languages
- Improve code comments
Code Review Process
- Maintainer review - A project maintainer will review your PR
- Feedback - You may be asked to make changes
- Approval - Once approved, your PR will be merged
- Release - Your changes will be included in the next release
Project Structure
Understanding the project structure helps with contributions:Getting Help
If you need help with contributing:- Check the documentation first
- Search existing issues for similar questions
- Open a discussion on GitHub for general questions
- Ask in pull requests for specific code-related questions