1/5 I was bored, hated Instagram, found Pixelfed slow β†’ built my own static photo portfolio.
Meet **TypeGrid**: JSON headless API + Alpine.js frontend + TUI CLI that does *everything*.

https://kare.smsk.dev #photography #opensource #cli

2/5 The CLI screenshot says it all:

πŸ“ Albums | πŸ–ΌοΈ Images | πŸ“Š EXIF & metadata
RosΓ© Pine colors, Zed-inspired, keyboard-first (hjkl).
Generates WebP thumbs, XML sitemaps, OpenGraph. Even GC.
https://github.com/devsimsek/TypeGrid

3/5 Architecture:
Photos β†’ TypeGrid CLI β†’ JSON API β†’ Alpine SPA β†’ static host
No build step. Extend with your own dashboard if you want.
CLI is one implementation of the TypeGrid spec β€” open source, build your own.

4/5 Why? My love of capturing moments and too much free time.

Check it here: https://kare.smsk.dev
#webdev #sideproject #alpinejs #TypeGrid

TypeGrid

TypeGrid β€” A minimal photographers' portfolio

5/5 What's your self-hosted photo setup? Instagram refugees assemble.
Would you use a TUI CLI for albums?
Source: github.com/devsimsek/TypeGrid

Oh, also I've written another article about this check it out: https://smsk.dev/2026/04/13/typegrid-i-built-my-own-photo-portfolio-because-instagram-sucks-and-i-was-bored/

TypeGrid: I Built My Own Photo Portfolio Because Instagram Sucks and I Was Bored - devsimsek's Blog

TypeGrid is a static photo portfolio powered by Alpine.js and a JSON headless API, managed entirely through a feature-packed CLI.

devsimsek's Blog