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 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.

Leave a Reply