I used GitHub as the backend for a shared photo album
Our trip photos always ended up scattered across group chats and different cloud accounts. I didn't want to run a photo server or charge a subscription, so I built Moa: a shared photo album where every album is a private
Our trip photos always ended up scattered across group chats and different cloud accounts. I didn't want to run a photo server or charge a subscription, so I built Moa: a shared photo album where every album is a private GitHub repo in your own account.
It's my first real project, built mostly with Claude Code.
How it works
- One album = one private repo. Originals, previews and thumbnails are committed into day folders. Friends you invite become collaborators, and you can clone the repo anytime.
- Saving at the same time. Every change is a small op (add photos, tag, like). Before each commit, the app replays the ops on the latest state and retries if someone else committed first, so nobody's changes are lost.
- Optional encryption. AES-GCM in the browser, so GitHub only stores ciphertext.
-
View-only links. Friends without GitHub can look. Encrypted copies go into secret gists, and the key lives only after the
#in the URL, which browsers never send to a server.
Limits
- Creating an album or uploading needs a GitHub account.
- About 10 GB per album is recommended.
Try it
Free for one album, $3.99 once for more (no subscription): albummoa.app
Would "Sign in with GitHub" stop your non-developer friends? I'd love to hear.
Originally published by Dev.to WebDev. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.