among-us-friends

🎮 An ELO and player tracking system for the game Among Us

MIT License

Stars
17

among-us-friends

My blog post: Writing Software for an Among Us League

I use this system to manage the Among Us league I play with my friends.

Features:

  • Elo rankings (w/ graphs)
  • Player pages
  • Achievements/trophy system
  • Seasons
  • Google Sheets as a datastore

Tech:

A Jamstack application which runs Express via Netlify Lambda.

The front-end is React via Create React App.

tested by Jest.

Google Sheets

Sheets should be named in the following format:

  • Season X — where X is an incrementing integer starting at 1

To add a season, edit seasons inside config.json. Append to the list of incrementing integers.

Enter data starting at C4 downwards. The rows should be 14 cells long.

10 player slots (which should be left empty if you have less than 10), 2 slots for the impostors (the names are repeated from the player list), 1 slot for the winner ('crew' or 'impostor'), and 1 slot for the map short name.

E.g.

"andy" <-- player list
"ally"
"bayf"
"beans"
"keita"
"mads"
"roma"
"spon"
"gem"
"" <-- empty if you have nine players

"ally" -- impostors
"spon"

"crew" <-- game winner (crew, impostor)

"skeld" <-- map shortname (skeld, mira, polus, airship)

Deploy

This application is deployed by Netlify.

Set two environmental variables via the Netlify UI.

  • SHEETS_ID - the id in the URL bar.
  • SHEETS_API_KEY - an API key from Google Console.

Local Development

Create a file called .env inside back-end/ with the contents snapshot=true

Run both the back-end and the front-end.

cd back-end/ && yarn install && yarn dev

cd front-end/ && yarn install && yarn start

Tests

cd back-end/ && yarn test