This is the source code for the above website. It hosts role descriptions for the Mafia format played by Cornell Mafia Club.
The website is a static site hosted on github pages. The master branch is auto-deployed. The site uses javascript to render json lists into the tabs viewed on the main page. There are two main manifest files and one important folder:
- roles.json lists all of the roles the site knows about
- tier-manifest.json lists the tiers that should be displayed on the main page
- tiers contains json files for each tier describing the roles in that tier
Stack-wise the site is relatively simple. We use:
- bootstrap for the UI to make the site look ok
- popper.js to render the tooltips that show you what the role does
- jquery to find/replace nodes in the domain
- custom Javascript implementing our domain logic
- Everything is tied together in index.html which is just a skeleton that loads data from the json files
This section describes common tasks that you might want to do.
-
Add the role to
roles.json
. For example this could describe a role:{ "name": "1-Shot Bulletproof Mafia", "description": "Protected from one kill during the night.", "team": "Mafia" }
Roles must have a
name
,description
, andteam
, but can have any other fields (just for metdata purposes) if you want to. I recommend also includingauthor
. -
Add the role to the file corresponding to the tier you want to add it to. For example if we wanted to add 1-Shot Bulletproof Mafia to Basic, we'd add:
"1-Shot Bulletproof Mafia",
to tiers/basic.json.
- Create a new file in tiers following the pattern of an existing tier. Notably:
- Update the name
- Update the description
- Make sure the version is unique, it should be the same as the filename (minus
.json
) - Make a list of the roles you want to include in the tier. Note: these roles must be in
roles.json
.
- Add the tier to tier-manifest.json
- Delete the entry corresponding to the tier from tier-manifest.json.
- The items in tier-manifest.json correspond to the filenames in tiers but the names displayed on the site is the name declared in the file for that tier (under the tiers folder)
- Generally these should be the same, but sometimes they might not be exactly the same
- If you need to search through all the files in the tiers folder to find the right tier name to delete from tier-manifest.json
- Conventionally we move tiers not in use to retired lists, just to keep things a little more organized
- Make sure you comma separate the roles properly
- there should be exactly one comma between every pair of roles, i.e.
{ ... }, { ... }
- there shouldn't be an extra comma at the end of the list, this is a relatively common mistake
- there should be exactly one comma between every pair of roles, i.e.
- Make sure the json files are otherwise syntactically valid. You can run the files through an online checker like https://jsonchecker.com/ if you don't have tools to do this on your computer.