Facedeck provides a deck of cards (with student photos) that professors can flip through to learn their students names. The stack of cards adapts as you get students right and wrong so you can practice those you get wrong more.
Facedeck has existed at northwestern for a long time and I had the project or rewriting it (the old code base was the opposite of DRY and a nightmare to extend). I was able to rewrite the system in less than a week (with about 30% the code of the old system) and then get started on new features.
The other group facedeck serves is residence hall leaders. Since there’s no good API available for finding out which students are in a resident hall, I wrote API endpoints that Student Affairs uses to create custom groups on facedeck.
- API for custom groups of students
- Vanilla JS stack of cards
- Canvas learning tool integration
While I would have loved to use react for the front end of facedeck (especially the stack portion). McCormick IT prioritizes maintainability since it has to support dozens of applications with a small team. This means doing things the same way everywhere is hugely important for developer efficiency. For the same reason bootstrap is used heavily. The app’s own stylesheet is less than 100 lines. K.I.S.S. is the mantra here.
The API for facedeck allows the office of student affairs to perform the normal CRUD actions on custom groups of students and specify who is in them + who can view them. The API uses json. Here’s the api spec I wrote https://rentry.co/9wb26.
Before a professor sees their class they are given a list of terms and then classes (in that term) to pick from. The data is all pulled from Northwestern’s registrar in real time (with caching of course, we’re not trying to be rude). Here’s what that look like before they reveal the students name:
Forgive the blurs I don’t want to share anyone’s photo that they don’t want shared.
And here is what it looks like after
The system also provides tooltips the first time you see a page explaining how everythig works.
The app looks view similar in canvas (only the menu bar is omitted for a more consistent experience with canvas).
So that’s what it does!