buddy_matching icon indicating copy to clipboard operation
buddy_matching copied to clipboard

Somewhat generic player matching service built with Elixir and Phoenix

Backend service for buddy.gg

Build Status Coverage Status License: AGPL v3

Somewhat Generic player matching service built with Phoenix, utilizing GenServers and sockets to avoid having an underlying database.

The application is structered as an umbrella consisting of 4 apps.

  • riot_api for integration with Riot's API
  • fortnite_api for integration with Fortnite's unofficial API
  • buddy_matching for in-memory storage of connected players and matching logic
  • buddy_matching_web main phoenix app from which the matching and API is exposed

Currently built only to support matching players from League of Legends, but can ideally be easily extended to support multiple games.

Run local

To start the server:

  • Install dependencies with mix deps.get
  • Start Phoenix endpoint with mix phx.server Now you can visit localhost:4000 from your browser.

To test interactively in IEx:

  • Install depedencies with mix.deps.get
  • Start IEx with iex -S mix phx.server

To test interactively with Riot's API in IEx, create a local dev.secret.exs from the template, and fill in your 24h API key generated at https://developer.riotgames.com/.

Run tests

mix test

Development

Features should be implemented on feature branches based on [development] and rebased thereinto with Pull Requests. New features should not add any issues to mix credo and should be formatted using mix format.

Releases should be merged from [development] into [master], whereafter [master] is rebased into [development].

Deployment

Development:
Branch 'development' is automatically deployed to Heroku at: https://lolbuddy.herokuapp.com/api/

Examples:

  • https://lolbuddy.herokuapp.com/api/summoner/euw/Froggen
  • https://lolbuddy.herokuapp.com/api/fortnite/pc/Ninja

Master:
Branch Master is manually deployed to DO at https://api.buddy.gg/api/

Examples:

  • https://api.buddy.gg/api/summoner/euw/Froggen
  • https://api.buddy.gg/api/fortnite/pc/Ninja

Deployment is handled with edeliver, distillery and conform. See the respective repos for more information.