Skip to content

An open-source AGPL-3.0 licensed companion webapp for League of Legends, providing relevant and up-to-date information about ongoing games, including summoner rank and premade information.

License

Notifications You must be signed in to change notification settings

greg2010/Athena

Repository files navigation

Build-status GitHub license Discord Website lol.krabsin.space

Athena

Athena Screenshot Athena Screenshot Mobile

Athena is an open-source companion webapp for League of Legends. Think op.gg, Mobalytics, or Blitz, but free, open-source and community-driven. It is licensed under AGPL-3.0 and is designed to be self-hosted. In addition, the hosted version is available at lol.krabsin.space.

Athena is written in modern, purely functional Scala and ScalaJS.

Features

  • Search for an ongoing game by the summoner name of any of the participants
  • Level, rank, winrate information for all players in the game
  • Summary information about the participating teams in the game
  • Information about premade groups on each team

Notable libraries

  • We use ZIO as our effect library of choice.
  • Http4s is used to serve the service's REST API.
  • Laminar, a minimal FRP framework is used on the frontend.
  • Frontend makes use of imgproxy to resize remote assets on the fly.
  • Webpack is used for asset packaging and minification.

Usage

Obtaining a Riot API Key

To make use of the app, you need a valid Riot API key. To test the service locally you can obtain a temporary developer API key on the Riot Developer portal. This key needs to be renewed every day, and per Riot Terms of Service cannot be used for any publicly available services.

For more permanent deployments, request the appropriate personal or production API Key through the developer portal. The approval period is anywhere between a couple of days and a couple of weeks. For more information on the application process refer to the official documentation.

Running the service

The primary way of distributing Athena is docker. You need backend to interact with Riot API, and frontend to serve the webapp.

docker run -e ATHENA_RIOT_API_KEY=your_api_key \
           -e ATHENA_HTTP_PORT=8081 \
           -p 8081:8081 \
           -d \
           ghcr.io/greg2010/athena-backend:latest
docker run -e BACKEND_API_URL=http://localhost:8081 \
           -e FRONTEND_URL=http://localhost:8080 \
           -p 8080:80 \
           -d \
           ghcr.io/greg2010/athena-frontend:latest

The application is fully stateless, with an in-memory cache for efficient API usage.

Environment variables

The full reference of all available environment variables, as well as the default values is available in the source code. Please refer to the following files:

Support

If you have found a bug, or have an idea how Athena can be improved, please open a Github issue. For any questions regarding the app, the process of hosting the service, or other, join our discord.

Note: please do not use issues in this repository for support questions. Talk to us on discord instead.

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. Come chat with us on discord if you have any questions, ideas or concerns.

Setting up the development environment

To compile the service locally, you need

  • JDK (>= 11)
  • sbt(>= 1)
  • node (>= 12)
  • yarn
  • inotify-tools

Please refer to your distro's instructions on package management for further details on how to install the required packages.

Backend

To start the backend locally, run

sbt backend/run

be sure to have the environment variable set for the Riot API key. The service will not start without it.

Frontend

To start a revolving environment for the frontend development (akin to what create-react-app provides out of the box) run

cd frontend; ./up.sh

This will start the local Webpack development server on localhost:8080. If a different host/port is desired, pass the respective environment variables to up.sh, e.g.

cd frontend; HOST=0.0.0.0 PORT=8081 ./up.sh

Supply any frontend application-specific environment variables in frontend/.env.local. See .env for reference.

Versioning

At this point we are not doing versioned releases. Use the commit tagged images for stable deployments instead. Master branch images can be assumed stable and suitable for public releases.

Roadmap

  • Client-side search history and suggest - in progress
  • Basic information pre-game lookup - in progress
  • Dark theme - planned
  • Desktop app companion - planned

Disclaimer

Athena isn't endorsed by Riot Games and doesn't reflect the views or opinions of Riot Games or anyone officially involved in producing or managing Riot Games properties. Riot Games, and all associated properties are trademarks or registered trademarks of Riot Games, Inc.

License

AGPL-3.0

About

An open-source AGPL-3.0 licensed companion webapp for League of Legends, providing relevant and up-to-date information about ongoing games, including summoner rank and premade information.

Topics

Resources

License

Stars

Watchers

Forks

Packages