Contributing to FMMLoader
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 installRun Development Mode
npm run tauri devThis starts both the Vite dev server and the Tauri app with hot reload.
Build for Production
npm run tauri buildOutputs 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/CDMaking Changes
1. Fork and Branch
git checkout -b feature/my-feature2. Code Style
Frontend:
- ESLint + Prettier (run
npm run lintandnpm run format) - TypeScript strict mode
Backend:
cargo fmtfor formattingcargo clippyfor lints
3. Testing
# Frontend
npm run build
npm run lint
# Backend
cd src-tauri
cargo test
cargo clippy4. Commit Messages
Use clear, descriptive messages:
feat: add dark mode togglefix: resolve crash on mod importdocs: update README installation steps
5. Pull Request
- Push your branch
- Open a PR against
main - Fill out the PR template
- Wait for CI checks to pass
- Address review feedback
Labels
PRs are categorized by label:
| Label | Description |
|---|---|
Type: Enhancement | New features |
Type: Bug | Bug fixes |
Type: Maintenance | Refactoring, deps |
Priority: High/Medium/Low | Urgency |
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?
- Open a GitHub Issue
- Join the Discord