Web & Mobile · Selected work

Standupd

Letterboxd, but for stand-up. Built because I wanted somewhere to log what I watch.

Stack
  • Flutter
  • Astro
  • Node.js
  • PostgreSQL
  • Cloudflare Workers
  • Buffer
Impact
  • 1,516 specials from 673 comedians
  • Web and iPhone apps shipped
  • Social publishing automated after approval
Standupd — Letterboxd, but for stand-up. Built because I wanted somewhere to log what I watch.

I built Standupd because I like logging things, and I had nowhere to log the comedy I watch. Letterboxd has my film history. I wanted the same kind of record for stand-up: what I watched, when I watched it, where I saw it, and whether I thought it was any good.

Standupd is free, has no ads, and works on the web and iPhone.

A diary for streams and live shows

Standupd treats a streamed special and a night at a comedy club as different kinds of entry. Both belong in the same diary, but they stay separate in the log and profile totals. You can rate either one from half a star to five and write a review if you have something to say. A rating on its own is a complete thought.

The ones you saw in a room count double, emotionally.

The catalog is the product

A comedy diary that cannot find the special I watched has failed at the only thing I built it to do. Today, Standupd lists 1,516 specials from 673 comedians—a number that keeps growing as new releases arrive. The catalog is checked instead of typed from memory: harvesting scripts find new entries, a verification pass checks them before publication, and separate jobs keep the posters and metadata current.

The same diary on web and iPhone

standupd.com and the iPhone app share the same accounts, catalog, diary, ratings, reviews, public feed, and watchlist. The app is built in Flutter. A Node and Express API handles the product, with Prisma and PostgreSQL underneath.

The Astro website prerenders the public catalog and serves it from Cloudflare, so signed-out visitors do not wait for the API to wake up. After sign-in, the site layers live account data over the same pages.

Social posts made from real product data

I also built the system behind @standupdapp on Instagram and X. It finds reasons to post in data Standupd already has, including anniversaries, new releases, what people are logging, and overlooked specials.

The same subject becomes a different post on each network. X gets a concise post and a link. Instagram gets a longer caption and a generated card using the special’s real poster art. I designed four visual templates for those cards: Playbill, Spotlight, Archive, and Marquee. The planner rotates subjects and layouts so the accounts do not repeat the same format.

Nothing goes out until I review and approve the plan. After that, Buffer handles the publishing automatically.

The parts that make it shippable

Standupd has public reviews, profiles, and activity, so moderation shipped with the product. Reviews pass through a content filter, members can report or block accounts, and repeated reports automatically hide content for review.

The iPhone app has no ads or analytics SDK. The website uses first-party product analytics with autocapture and session recording turned off.

Musento comes from the same habit, applied to museum visits. Murder Matrix is another solo iOS project, a procedural logic-deduction game built without ads or tracking.