A static site where developers rank the semester's projects and see the resulting teams.
index.html: enter your name and drag the projects into order.results.html: shows the computed teams and everyone's submitted rankings.config.js: the only file to edit each semester (round name, projects, backend URL).
- Team sizes are spread as evenly as possible across the number of people who submitted
(10 people / 3 projects gives 4, 3, 3). Whichever project gets the extra member is the
one that best satisfies preferences. You can force sizes with
fixedTeamSizesinconfig.js. - Assignment gives as many people as possible their 1st choice, then as many as possible their 2nd choice, and so on. It's an optimal assignment, not first-come-first-served.
- If someone submits twice with the same name, only their latest ranking counts.
GitHub Pages can't store data, so submissions go to a Google Sheet:
- Create a new Google Sheet.
- Extensions → Apps Script, replace the contents with
apps-script/Code.gs, and save. - Deploy → New deployment → type Web app.
- Execute as: Me
- Who has access: Anyone
- Authorize it, then copy the web app URL (ends in
/exec) intoapiUrlinconfig.js.
Responses show up in the Rankings tab of the sheet. To remove someone, delete their row.
If you change Code.gs later, use Deploy → Manage deployments → Edit → New version
so the URL stays the same.
Push to GitHub, then Settings → Pages → Deploy from a branch → main / root.
In config.js:
- Change
round(e.g."spring-2027"). Old submissions stay in the sheet but are ignored. - Replace the
projectslist. You can have any number of projects.
Leave apiUrl empty and open index.html in a browser. Rankings are then saved in
that browser's localStorage only.