Projects / Agon


Jan 2022 - May 2023

Agon is a web application for automatically running competitions for games with (high)scores. The idea originated from running a monthly competition on the Virtual Pinball machine. An admin can add games to the database and set up timed game-by-game competitions or indefinite competitions with multiple simultaneous games.

The system uses a Discord bot to notify players what game is played that month for example, and players can also use the bot to see the leaderboards and post scores with an image for proof. A website is also present for a nicer view of the leaderboards and a more intuitive admin interface. After each month, the Discord bot also posts the winner of that month.

Agon consists of 4 major components:

  1. Angular frontend
  2. Spring Boot backend
  3. Discord bot using discordjs
  4. PostgreSQL database

There's also a Docker Compose to easily run all components on my server.

Screenshot of the leaderboard page on the Agon website, showing several columns that each represent a game with scores of different players in each. Screenshot of the admin ui for configuring games on the Agon website
Screenshot of the Discord bot posting the new game for that month Admin UI on the Agon website for managing scores posted by users Discord bot posting a user's score and image in a Discord channel