Inner Circle Seoul
A website for a friend’s board game café in Seoul. Two questions, basically: what’s on the shelf, and what should we play tonight.
He keeps the shelf as a list on BoardGameGeek. The site reads that list twice a day and rebuilds itself from it.
I did not want to build him an admin panel. He already keeps the café’s shelf as a BoardGameGeek list, and (crucially) he already keeps it up to date, so that list is the source of truth. The only thing he adds by hand is which languages are printed on the box, as lang:ko,ja in the comment field. Player counts, playing time, complexity, cover art, all of it comes from BoardGameGeek. Putting a game on the shelf and putting it on the site ended up being the same job.
Nothing runs when someone opens the page. A scheduled job wakes up at midnight and noon (Seoul time), asks BoardGameGeek for the list, and waits politely when the API says to come back later, which it does a lot. Covers get downloaded once, shrunk down, and written into a data file along with everything else, and that file gets committed. What’s actually published is plain HTML with the answers already baked in. BoardGameGeek has its slow days and its outages; none of that ever reaches the café.
Bad data shouldn’t cost him a game. If he types lang:kr instead of lang:ko, or forgets the tag entirely, the game still shows up on the shelf. The problem goes into a short plain-English report he can read whenever he gets round to it. Language codes are checked against the full ISO list, so a typo gets flagged instead of quietly accepted. He didn’t write the code and he shouldn’t have to debug it.
Fifty-six games at the moment, with search, four ways to sort, a complexity band, and a filter for whether a given group can actually play a given box (which mostly comes down to what language is printed on the cards). The recommender narrows things down by how many people showed up and what mood they’re in, and every card picks up a colour from its own box art.
Everything is in Korean and English, and the Korean was written as Korean, not the English run through a translator. The café is his; the site is mine.