Skip to content

RandomHashTags/league-scheduling

Repository files navigation

League Scheduling

A high-performance, feature-rich league scheduling library.

Table of Contents

Requirements

  • at least Swift 6.2

Features

Scheduling

  • 'Fair' scheduling
  • Balancing times, locations, and home/away allocations
  • Multiple divisions
  • Back-to-back matchups
  • Flexible game gaps
  • Matchup and travel durations
  • Time & location availability
  • Bye weeks
  • Separate game day, division and team settings

Technical

  • Fast, scalable schedule generation
  • Protocol Buffers

Getting Started

Swift Package Manager
  1. Add the dependency to your project:
.package(url: "https://github.com/RandomHashTags/league-scheduling", exact: "0.10.0")
  1. Use the LeagueScheduling product in your target:
.product(name: "LeagueScheduling", package: "league-scheduling")
  1. Get your hands on a LeagueRequestPayload (protobuf) with the settings you want

    • Supports Codable out-of-the-box to make it easy
  2. Call generate() on the request payload

  3. Hook up the response to your server/front-end

Contributing

This project is owned and maintained by Evan Anderson. All contributions are welcome under the terms of the AGPLv3.