dang, my bad. I did a pretty quick (and large) refactor this morning and must have broke it.
EDIT: it fetches historical games when the session is established. The bug is that after you complete the game, the call to renderStats is still using the old games list; it needs to refresh the list so it includes the game you just completed. I'll fix this over the weekend. Cheers!
I use a NAS, raspberry pi, and s3 with the following workflow:
Photos are imported from SD card using a script. This script creates a new directory, captures some metadata, copies the photos in and creates thumbnails. This directory is rsynced to the NAS then encrypted, compressed and sent to s3. Nightly, from another location a raspberry pi with a large encrypted disk rsyncs the entire NAS.
All viewing and editing of photos is done against the NAS, and any changes are picked up nightly by the pis. The s3 copy acts as an immutable original.
It is not at the moment but we are considering making the server + maybe infra repos public in the future, most likely when we've agreed on and implemented some sort of self-hosted option(s).
We will probably write a blog post or two about how we've designed the API + infra around it as there are some interesting topics to be covered.
One of the goals was to also have fun and experiment with a few approaches we've been wanting to use but could not on our daily jobs.
For reference, everything is on AWS and we are using AWS CDK (TypeScript), having moved away from serverless.com recently.
We are ONLY using managed services/resources which are "fully serverless" (API GW, WAF, Dynamo + Dynamo Streams, Lambda, EventBridge, ...) - to save cost, to minimise waste, to reduce ops, etc.
a QR generator which will magically connect me to the WiFi with my password embedded in the QR somehow.
This is indeed what it does, but it also includes the plaintext password in case you want to connect a device that doesn't have a camera, like a PC. There's an open issue for adding a "hide password" option. You could also just cut off or scribble out the password on the print out.