Welcome Contributors
Thank you for your interest in contributing to Minimal Tray Tasker! This guide will help you get started with contributing to the project, whether you’re fixing bugs, adding features, or improving documentation.Getting Started
Development Environment Setup
Install Dependencies
Install all required dependencies:Make sure you have the prerequisites installed:
- Node.js v18 or higher
- Rust 1.77.2 or higher
- Platform-specific Tauri dependencies
Verify Setup
Run the development server to ensure everything works:The application should launch successfully.
Code Style Guidelines
TypeScript/JavaScript
The project uses TypeScript with strict type checking:- Type everything - Avoid using
any, prefer explicit types - Async/await - Use async/await for asynchronous operations
- Svelte conventions - Follow Svelte 5 runes patterns (
$state,$derived,$effect)
Rust
Follow Rust’s standard conventions:- Run
cargo fmtbefore committing - Run
cargo clippyto catch common issues - Error handling - Use
Resulttypes, avoid unwrapping in production code - Documentation - Add doc comments for public functions
Svelte Components
- Component files - Use PascalCase for component files (
TrackerList.svelte) - Props typing - Define prop types explicitly
- Reactive statements - Use Svelte 5 runes for reactivity
Testing Your Changes
Manual Testing
Making Changes
Frontend Changes
When modifying the Svelte frontend:- Update the UI in
src/routes/orsrc/lib/Components/ - Modify services in
src/lib/trackerService.tsorsrc/lib/settingsService.ts - Update database schema in
src/lib/db/schema.tsif needed - Update types - Ensure TypeScript types are correct
Backend Changes
When modifying the Rust backend:- Update services in
src-tauri/src/services/ - Add migrations if changing database structure
- Expose commands in
src-tauri/src/lib.rsviainvoke_handler - Update dependencies in
src-tauri/Cargo.tomlif needed
Database Changes
If you need to modify the database schema:- Update
src/lib/db/schema.tswith the new schema - Create a migration in
src-tauri/src/migration_manager.rs - Test migration on a fresh database and existing databases
Database migrations must be backward compatible. Test thoroughly to avoid data loss.
Submitting a Pull Request
Commit Your Changes
Write clear, descriptive commit messages:Use prefixes like:
feat:for new featuresfix:for bug fixesdocs:for documentationrefactor:for code refactoringstyle:for formatting changes
Create Pull Request
Open a pull request on GitHub:
- Provide a clear title and description
- Reference any related issues (e.g., “Fixes #123”)
- Describe what changed and why
- Include screenshots for UI changes
Pull Request Checklist
Before submitting, ensure:- Code follows the project’s style guidelines
- TypeScript type checking passes (
npm run check) - Rust code is formatted (
cargo fmt) - No Clippy warnings (
cargo clippy) - Application builds successfully (
npm run tauri build) - Changes are tested manually
- Commit messages are clear and descriptive
- Documentation is updated if needed
Areas to Contribute
Here are some ways you can contribute:Feature Enhancements
- Custom notification intervals
- Task categories and tags
- Statistics and progress tracking
- Dark mode themes
- Keyboard shortcuts
- Task import/export
Bug Fixes
- Check the GitHub issues for reported bugs
- Fix platform-specific issues
- Improve error handling
Documentation
- Improve README and setup guides
- Add code comments
- Create tutorial videos or blog posts
- Translate documentation
Performance
- Optimize database queries
- Reduce memory usage
- Improve startup time
Code of Conduct
We are committed to providing a welcoming and inclusive environment:- Be respectful - Treat all contributors with respect
- Be constructive - Provide helpful feedback
- Be patient - Remember that everyone has different skill levels
- Be collaborative - Work together to improve the project
Getting Help
If you need help contributing:- Check existing issues - Your question might already be answered
- Open a discussion - Ask questions in GitHub Discussions
- Join the community - Connect with other contributors
- Read the docs - Review the Architecture and Building guides
Project Structure Reference
Key files to know about:License
By contributing to Minimal Tray Tasker, you agree that your contributions will be licensed under the same license as the project.Thank you for contributing to Minimal Tray Tasker! Your efforts help make this tool better for everyone.