Contributing to FMMLoader

PreviousNext

How to contribute to the FMMLoader-26 application

FMMLoader-26 is open source and welcomes contributions. This guide covers how to set up the development environment and submit changes.

Repository

GitHub: justinlevinedotme/FMMLoader-26

License: GPL-3.0


Tech Stack

  • Frontend: React + TypeScript + Vite + Tailwind + shadcn/ui
  • Backend: Rust (Tauri v2)
  • Build: Tauri CLI, npm

Development Setup

Prerequisites

  • Node.js 18+ and npm
  • Rust (latest stable via rustup)
  • Tauri CLI: cargo install tauri-cli
  • Platform-specific dependencies:
    • Windows: WebView2, Visual Studio Build Tools
    • macOS: Xcode Command Line Tools
    • Linux: GTK3, WebKitGTK, libappindicator

Clone and Install

git clone https://github.com/justinlevinedotme/FMMLoader-26.git
cd FMMLoader-26
npm install

Run Development Mode

npm run tauri dev

This starts both the Vite dev server and the Tauri app with hot reload.

Build for Production

npm run tauri build

Outputs platform-specific installers to src-tauri/target/release/bundle/.


Project Structure

FMMLoader-26/
├── src/                    # React frontend
│   ├── App.tsx             # Main app component
│   ├── components/         # UI components
│   └── hooks/              # useTauri, useUpdater
├── src-tauri/              # Rust backend
│   ├── src/
│   │   ├── main.rs         # Tauri command registration
│   │   ├── config.rs       # App paths and state
│   │   ├── import.rs       # Mod import logic
│   │   ├── mod_manager.rs  # Apply/enable/disable
│   │   ├── conflicts.rs    # Conflict detection
│   │   └── ...
│   └── tauri.conf.json     # Tauri configuration
└── .github/workflows/      # CI/CD

Making Changes

1. Fork and Branch

git checkout -b feature/my-feature

2. Code Style

Frontend:

  • ESLint + Prettier (run npm run lint and npm run format)
  • TypeScript strict mode

Backend:

  • cargo fmt for formatting
  • cargo clippy for lints

3. Testing

# Frontend
npm run build
npm run lint

# Backend
cd src-tauri
cargo test
cargo clippy

4. Commit Messages

Use clear, descriptive messages:

  • feat: add dark mode toggle
  • fix: resolve crash on mod import
  • docs: update README installation steps

5. Pull Request

  1. Push your branch
  2. Open a PR against main
  3. Fill out the PR template
  4. Wait for CI checks to pass
  5. Address review feedback

Labels

PRs are categorized by label:

LabelDescription
Type: EnhancementNew features
Type: BugBug fixes
Type: MaintenanceRefactoring, deps
Priority: High/Medium/LowUrgency

CI/CD

  • ci.yml - Runs on PRs: lint, format, build, cargo test/clippy
  • build.yml - Runs on tags: builds and releases for all platforms

Need Help?