Skip to content

Latest commit

 

History

1,293 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Open League Manager


Current Status: Pre-alpha — expect incomplete gameplay systems, evolving save formats, and frequent documentation updates.
Last Updated: 22-MAY-2026


1. What is Open League Manager?

Open League Manager (OLManager) is a public, GPL-3.0 desktop management game built with Tauri v2, Rust, React, and TypeScript. The project continues the OpenFootManager lineage while focusing on transparent community contribution, maintainable releases, and careful data provenance.

  • Cross-platform desktop — native performance via Tauri v2, runs on Windows, macOS, and Linux
  • Rust-powered backend — type-safe, zero-cost abstractions for game simulation and data processing
  • React + TypeScript frontend — modern reactive UI with full type coverage
  • Community-first — public, transparent development with an issue-first contribution model
  • Data provenance — careful tracking of external data and asset sources

Architecture: Hybrid Tauri v2 (Rust backend / React-TypeScript frontend), Hexagonal architecture in Rust with domain-driven design.


2. Architecture

┌────────────────────────────────────────────────────────────────────────────┐
│                        APPLICATION ARCHITECTURE                            │
│                                                                            │
│   ┌─────────────────────────────────────────────────────────────────┐      │
│   │  FRONTEND (React + TypeScript)                                  │      │
│   │                                                                 │      │
│   │  ┌───────────┐  ┌───────────┐  ┌───────────┐  ┌──────────────┐  │      │
│   │  │  Pages    │  │Components │  │  Stores   │  │  Lib/Utils   │  │      │
│   │  └─────┬─────┘  └─────┬─────┘  └─────┬─────┘  └──────┬───────┘  │      │
│   │        └──────────────┴──────────────┴───────────────┘          │      │
│   │                          │ Tauri IPC                            │      │
│   └──────────────────────────┼──────────────────────────────────────┘      │
│                              │                                             │
│   ┌──────────────────────────┼──────────────────────────────────────┐      │
│   │  BACKEND (Rust)          │                                      │      │
│   │                          ▼                                      │      │
│   │  ┌──────────────────────────────────────────────────────────┐   │      │
│   │  │  Tauri Commands ───► Domain Logic ───► Persistence       │   │      │
│   │  │  (IPC handlers)      (crates/)         (SQLite/FS)       │   │      │
│   │  └──────────────────────────────────────────────────────────┘   │      │
│   └─────────────────────────────────────────────────────────────────┘      │
└────────────────────────────────────────────────────────────────────────────┘

The full system overview is documented at docs/ARCHITECTURE.md — including the React/Tauri boundary, Rust crate map, persistence layer, testing strategy, and feature-extension rules.


3. Technical Requirements

Technology Version Notes
Rust 1.80+ Edition 2021, required for Tauri v2 builds
Node.js 20+ Required for frontend tooling
npm 10+ Package manager for frontend dependencies
Tauri CLI 2.x cargo install tauri-cli --version "^2"

Core Dependencies

# Rust crates (Cargo.toml)
tauri = "2"
serde = "1"       # Serialization
rusqlite = "0.32.1" # SQLite persistence

# Frontend (package.json)
react = "^19"
typescript = "^6.0"
@tauri-apps/api = "^2.11"

4. Quick Installation

# 1. Install frontend dependencies
npm ci

# 2. Run stable non-production checks
cargo fmt --manifest-path src-tauri/Cargo.toml --check
cargo check --manifest-path src-tauri/Cargo.toml

Broader non-production checks are also available, currently tracked as pre-existing runtime/test debt and exposed through manual experimental CI jobs:

npm test
npm run build:types
cargo clippy --manifest-path src-tauri/Cargo.toml --workspace --all-targets -- -D warnings
cargo test --manifest-path src-tauri/Cargo.toml --workspace

Do not run production Tauri bundle builds as part of normal PR validation. Packaging belongs to the release process.


5. Project Structure

OLManager/
├── src/                                        # Frontend (React + TypeScript)
│   ├── App.tsx                                 # Root application component
│   ├── main.tsx                                # Entry point
│   ├── components/                             # UI components
│   ├── pages/                                  # Route pages
│   ├── store/                                  # State management
│   └── lib/                                    # Utilities and helpers
│
├── src-tauri/                                  # Backend (Rust)
│   ├── Cargo.toml                              # Rust dependencies
│   ├── src/                                    # Tauri commands and setup
│   └── crates/                                 # Domain crates
│       ├── domain/                             # Domain models and enums
│       ├── ofm_core/                           # Core game logic
│       └── ...                                 # Additional crates
│
├── docs/                                       # Documentation
│   ├── ARCHITECTURE.md                         # System architecture
│   ├── GOVERNANCE.md                           # Branch model and review gates
│   ├── RELEASE_PROCESS.md                      # Release workflow
│   ├── DATA_PROVENANCE.md                      # External data sources
│   └── INHERITED_DOCS_AUDIT.md                 # Documentation audit
│
├── README.md                                   # This file
├── CONTRIBUTING.md                             # Contribution guidelines
├── SECURITY.md                                 # Vulnerability reporting
└── LICENSE                                     # GPL-3.0 license

6. Code Conventions

Rust Conventions

  • Crates: Lowercase with underscores (e.g., ofm_core, player_rating)
  • Types: PascalCase (e.g., Player, TeamComposition)
  • Functions/Methods: snake_case (e.g., calculate_rating())
  • Enums: PascalCase variants (e.g., LolRole::Support)
  • Error handling: Custom error types with thiserror

TypeScript / React Conventions

  • Components: PascalCase (e.g., PlayerCard, SquadView)
  • Hooks: camelCase with use prefix (e.g., usePlayerData)
  • Files: PascalCase for components, camelCase for utilities
  • Types: PascalCase interfaces and type aliases

Commits

Format: <type>(<scope>): <description>

feat(player): add LolRole assignment
fix(scouting): correct rating calculation
refactor(team): replace formation with TeamComposition
docs(readme): update architecture diagram

7. License and Lineage

This repository is licensed under the GNU General Public License v3.0. See LICENSE.

Code and assets inherited from OpenFootManager are treated as GPL-3.0-compatible unless a later audit documents otherwise. Third-party datasets, generated caches, and source-derived content such as Leaguepedia data are not automatically GPL by inheritance; they require separate provenance, attribution, and redistribution review. See docs/DATA_PROVENANCE.md.


8. Contributing

Contributions are issue-first:

  1. Open a template-based issue or join Discussions for questions.
  2. Wait for maintainer approval via status:approved.
  3. Branch from development using type/lowercase-slug, for example fix/ci-labels.
  4. Open the PR against development unless it is a maintainer release or hotfix promotion.

Start with CONTRIBUTING.md, then review:


9. Resources



Built with Rust + Tauri + React + TypeScript + Community + Passion

About

No description, website, or topics provided.

Resources

Code of conduct

Contributing

Security policy

Stars

91 stars

Watchers

4 watching

Forks

Releases

Packages

Used by

Contributors

Languages