Skip to main content
We appreciate contributions to LiquidLauncher! Whether you’re fixing bugs, adding features, or improving documentation, your help makes the project better for everyone.

Getting Started

Before contributing, make sure you’re familiar with the project:
1

Read the documentation

Familiarize yourself with LiquidLauncher’s features and architecture.
2

Set up your development environment

Follow the Building from Source guide to get the project running locally.
3

Check existing issues

Browse open issues to see if someone is already working on what you have in mind.

Code of Conduct

Be respectful and constructive in all interactions. We’re building this together as a community.

Project Structure

Understanding the codebase will help you make effective contributions:
Located in the src/ directory:
src/
├── App.svelte           # Main application component
├── app.css              # Global styles
├── main.js              # Application entry point
├── lib/                 # Reusable components
│   ├── views/           # Main view components
│   ├── components/      # UI components
│   └── utils/           # Utility functions
└── font/                # Custom fonts
The frontend is built with:
  • Svelte 4 - Reactive UI framework
  • Vite - Fast build tool and dev server
  • Tauri APIs - Bridge to Rust backend
Located in the src-tauri/ directory:
src-tauri/
├── src/                 # Rust source code
│   ├── main.rs          # Application entry point
│   ├── auth/            # Authentication logic
│   ├── minecraft/       # Minecraft-specific functionality
│   └── utils/           # Shared utilities
├── Cargo.toml           # Rust dependencies
├── build.rs             # Build script
└── tauri.conf.json      # Tauri configuration
Key backend components:
  • Tauri 2.x - Desktop app framework
  • Tokio - Async runtime
  • Reqwest - HTTP client for API calls
  • OAuth2 - Authentication handling
  • azalea-auth - Minecraft authentication
  • package.json - Node.js dependencies and scripts
  • Cargo.toml - Rust dependencies and metadata
  • rust-toolchain.toml - Rust toolchain version (nightly-2026-01-14)
  • vite.config.js - Vite bundler configuration
  • tauri.conf.json - Tauri app configuration

How to Contribute

Reporting Issues

Found a bug? Open an issue with:
1

Clear title

Use a descriptive title that summarizes the problem.
2

Reproduction steps

Provide step-by-step instructions to reproduce the issue.
3

Expected vs actual behavior

Describe what you expected to happen and what actually happened.
4

Environment details

Include your OS, LiquidLauncher version, and any relevant system information.
5

Logs and screenshots

Attach error logs, console output, or screenshots if applicable.

Suggesting Features

Have an idea for improvement? We’d love to hear it!
Before suggesting a feature, search existing issues to avoid duplicates. If found, add your thoughts to the existing discussion.
When proposing a feature:
  • Explain the problem it solves
  • Describe your proposed solution
  • Consider implementation complexity
  • Think about backward compatibility

Submitting Code

1

Fork the repository

Create your own fork of the LiquidLauncher repository.
2

Create a feature branch

Create a branch for your changes:
git checkout -b feature/your-feature-name
Use descriptive branch names:
  • feature/add-dark-theme
  • fix/login-crash
  • refactor/auth-module
3

Make your changes

Write clean, well-documented code following the project’s style:
  • Rust: Follow Rust API Guidelines
  • JavaScript/Svelte: Use consistent formatting (project uses standard conventions)
  • Add comments for complex logic
  • Keep functions focused and modular
4

Test your changes

Ensure your code works correctly:
# Test in development mode
bun run tauri dev

# Build and test production version
bun run tauri build
Always test both development and production builds, as they can behave differently.
5

Commit your changes

Write clear, concise commit messages:
git commit -m "feat: add automatic update checking"
git commit -m "fix: resolve crash on Linux systems"
git commit -m "refactor: improve auth error handling"
Use conventional commit prefixes:
  • feat: - New feature
  • fix: - Bug fix
  • refactor: - Code refactoring
  • docs: - Documentation changes
  • style: - Code style changes (formatting)
  • test: - Test additions or changes
  • chore: - Maintenance tasks
6

Push to your fork

Push your branch to GitHub:
git push origin feature/your-feature-name
7

Open a Pull Request

Go to the LiquidLauncher repository and open a pull request.In your PR description:
  • Summarize your changes
  • Reference related issues (e.g., “Closes #123”)
  • Explain your approach if complex
  • Include screenshots for UI changes
  • List any breaking changes

Pull Request Guidelines

Keep it focused

One PR should address one issue or feature. Split large changes into multiple PRs.

Update documentation

If your changes affect user-facing features, update the relevant documentation.

Maintain compatibility

Avoid breaking changes unless absolutely necessary. Discuss major changes first.

Be responsive

Respond to review comments and be open to feedback and suggestions.

Code Style

Rust

// Use descriptive names and add documentation
/// Authenticates a user with Microsoft OAuth
pub async fn authenticate_microsoft(client_id: &str) -> Result<Token> {
    // Implementation
}
Run cargo fmt to automatically format Rust code according to project standards.

JavaScript/Svelte

// Use const/let, descriptive names
const fetchUserProfile = async (userId) => {
  const response = await invoke('get_profile', { userId });
  return response;
};

Licensing

LiquidLauncher is licensed under the GNU General Public License v3.0 (GPL-3.0).
Important licensing requirements:By contributing to LiquidLauncher, you agree that your contributions will be licensed under the GPL-3.0. This means:
  • You must disclose the source code of any modified versions
  • Modified versions must also be licensed under GPL-3.0
  • You cannot use code from this project in closed-source applications
  • You must preserve copyright notices and license information

What This Means for Contributors

You are free to:
  • Use the code
  • Share the code
  • Modify the code
However:
  • You must share your source code if you distribute modified versions
  • Your modifications must also be GPL-3.0 licensed
  • You cannot incorporate this code into proprietary software
Read the full LICENSE file for complete details.

Development Resources

Tauri Documentation

Learn about the Tauri framework

Svelte Documentation

Svelte framework reference

Rust Book

Official Rust programming guide

GitHub Repository

View source code and issues

Community

Connect with other developers:

Getting Help

That’s okay! Start with small contributions like:
  • Fixing typos in documentation
  • Adding comments to unclear code
  • Improving error messages
  • Testing and reporting bugs
Check the Resources section for learning materials.
Look for issues labeled:
  • good first issue - Perfect for newcomers
  • help wanted - Maintainers need assistance
  • documentation - Improve docs
Browse the issue tracker for these labels.
Don’t be discouraged! Common reasons include:
  • Changes don’t align with project goals
  • Code quality or style issues
  • Missing tests or documentation
  • Breaking changes without discussion
Ask for feedback and learn from the review. Every contributor started somewhere!
Maintainers review PRs as time permits. You can:
  • Ensure your PR is complete and well-documented
  • Be patient and responsive to feedback
  • Avoid bumping the PR unnecessarily
Complex changes may take longer to review than simple fixes.

Thank You!

Your contributions help make LiquidLauncher better for everyone. We appreciate the time and effort you put into improving the project.

Ready to contribute?

Check out open issues or start by building from source.

Build docs developers (and LLMs) love