Report Bugs
Found an issue? Let us know so we can fix it!
Thank you for your interest in contributing to MiniFy! This guide will help you get started with contributing code, documentation, themes, or ideas.
Report Bugs
Found an issue? Let us know so we can fix it!
Suggest Features
Have an idea? We’d love to hear it.
Improve Docs
Help make the documentation better.
Create Themes
Design new themes for the community.
Submit Code
Fix bugs or implement new features.
Review PRs
Help review pull requests.
┌───────────────────────────────────────────────────────────────────────────────┐│ Contribution Workflow │├───────────────────────────────────────────────────────────────────────────────┤│ ││ ┌─────────────┐ ││ │ 1. Fork │ Create your own copy of the repository ││ └──────┬──────┘ ││ │ ││ ▼ ││ ┌─────────────┐ ││ │ 2. Clone │ Clone your fork to your local machine ││ └──────┬──────┘ ││ │ ││ ▼ ││ ┌─────────────┐ ││ │ 3. Branch │ Create a feature branch for your changes ││ └──────┬──────┘ ││ │ ││ ▼ ││ ┌─────────────┐ ││ │ 4. Develop │ Make your changes with tests ││ └──────┬──────┘ ││ │ ││ ▼ ││ ┌─────────────┐ ││ │ 5. Commit │ Commit with conventional commit messages ││ └──────┬──────┘ ││ │ ││ ▼ ││ ┌─────────────┐ ││ │ 6. Push │ Push your branch to your fork ││ └──────┬──────┘ ││ │ ││ ▼ ││ ┌─────────────┐ ││ │ 7. PR │ Open a Pull Request ││ └──────┬──────┘ ││ │ ││ ▼ ││ ┌─────────────┐ ││ │ 8. Review │ Address feedback and iterate ││ └──────┬──────┘ ││ │ ││ ▼ ││ ┌─────────────┐ ││ │ 9. Merge │ Your contribution is merged! 🎉 ││ └─────────────┘ ││ │└────────────────────────────────────────────────────────────────────────────────┘Fork the repository
Click the “Fork” button on the GitHub repository.
Clone your fork
git clone https://github.com/YOUR-USERNAME/MiniFy.gitcd MiniFyInstall dependencies
pnpm installCreate a feature branch
git checkout -b feature/my-awesome-featureOr for bug fixes:
git checkout -b fix/bug-descriptionMake your changes
Write code, fix bugs, or update documentation.
Test your changes
# Run the desktop apppnpm desktop:dev
# Check formatting and lintingpnpm checkCommit your changes
git add .git commit -m "feat(desktop): add amazing feature"Push and create PR
git push origin feature/my-awesome-featureThen open a Pull Request on GitHub.
| Tool | Version | Installation |
|---|---|---|
| Node.js | 18+ | nodejs.org |
| pnpm | 9+ | npm install -g pnpm |
| Rust | Latest | rustup.rs |
For platform-specific requirements, see the Building Guide.
# Desktop applicationpnpm desktop:dev # Run in development modepnpm desktop:build # Build for productionpnpm desktop:clear # Clear stored credentials
# Websitepnpm www:dev # Run website in developmentpnpm www:build # Build website
# Documentationpnpm docs:dev # Run docs in developmentpnpm docs:build # Build documentation
# Code qualitypnpm check # Run Biome linterpnpm format # Format code with Biome
# All packagespnpm dev # Run all in developmentpnpm build # Build all packagesWe use Biome for code formatting and linting:
# Check for issuespnpm check
# Fix issues automaticallypnpm format// ✅ Good: Proper type definitionsinterface UserData { id: string; name: string; email: string;}
// ✅ Good: Explicit function return typesfunction processUser(user: UserData): ProcessedUser { // ...}
// ❌ Bad: Using 'any'function processData(data: any): any { // ...}
// ❌ Bad: Missing typesfunction processData(data) { // ...}// ✅ Good: Handle errors explicitly#[tauri::command]pub async fn save_setting(value: String) -> Result<(), String> { do_something() .map_err(|e| format!("Failed to save: {}", e))?; Ok(())}
// ❌ Bad: Unwrap without context#[tauri::command]pub fn save_setting(value: String) { do_something().unwrap(); // Panics without explanation}// ✅ Good: Functional component with proper typinginterface ButtonProps { label: string; onClick: () => void; disabled?: boolean;}
export function Button({ label, onClick, disabled = false }: ButtonProps) { return ( <button onClick={onClick} disabled={disabled}> {label} </button> );}
// ✅ Good: Named exports for componentsexport function MyComponent() { ... }
// ❌ Bad: Default exports for componentsexport default function MyComponent() { ... }We use Conventional Commits:
<type>(<scope>): <description>
[optional body]| Type | Description | Example |
|---|---|---|
feat | New feature | feat(desktop): add volume slider |
fix | Bug fix | fix(auth): handle expired tokens |
docs | Documentation | docs(readme): update installation |
style | Formatting | style: fix indentation |
refactor | Code restructure | refactor(ui): simplify layout |
perf | Performance | perf: optimize polling interval |
test | Tests | test: add auth tests |
chore | Maintenance | chore: update dependencies |
| Scope | Description |
|---|---|
desktop | Desktop application |
www | Marketing website |
docs | Documentation |
auth | Authentication |
ui | User interface |
ai | AI DJ feature |
feat(desktop): add volume normalization option
- Added slider in settings for volume normalization- Implemented audio processing in Rust backend- Updated settings schema with new fieldfix(auth): handle expired refresh tokens correctly
Previously, expired refresh tokens would cause a silent failure.Now we properly detect this and prompt for re-authentication.
Fixes #123Update documentation
If your change affects user-facing features, update the relevant docs.
Run all checks
pnpm checkpnpm buildWrite a clear PR description
Include:
Link related issues
Reference issues: “Fixes #123” or “Relates to #456”
Request review
A maintainer will review and provide feedback.
Address feedback
Make requested changes and push updates.
Celebrate! 🎉
Once approved, your PR will be merged.
## DescriptionBrief description of changes.
## Type of Change- [ ] Bug fix- [ ] New feature- [ ] Documentation update- [ ] Other (describe)
## TestingHow was this tested?
## ScreenshotsIf applicable.
## Related IssuesFixes #(issue number)When reporting bugs, include:
| Information | Description |
|---|---|
| MiniFy version | e.g., v1.0.0 |
| Operating system | e.g., Windows 11, macOS 14, Ubuntu 22.04 |
| Steps to reproduce | Numbered list of actions |
| Expected behavior | What should happen |
| Actual behavior | What actually happens |
| Screenshots | If applicable |
| Error messages | Console output, logs |
Use the bug report template.
Feature requests should include:
Use the feature request template.
Want to contribute a theme?
Create your theme JSON
{ "name": "My Theme", "author": "Your Name", "colors": { "background": "#1e1e2e", "foreground": "#cdd6f4", "primary": "#89b4fa", "secondary": "#313244", "accent": "#f5c2e7", "muted": "#6c7086", "border": "#45475a" }}Test your theme
Place it in apps/desktop/src/themes/ and test thoroughly.
Add to www themes
Also add it to apps/www/public/themes/ for the website preview.
Submit a PR
Include screenshots of your theme in use.
We are committed to providing a welcoming and inclusive experience. Please read our Code of Conduct.
Key points:
By contributing to MiniFy, you agree that your contributions will be licensed under the MIT License.