Accidentally Awesome Labs Case AAL–004
Cover · 01
01 / 10

Social app2026

MOGEN

No stars. Just how it felt.

One archive for everything you watch and play. Rate by feeling instead of stars, track down to the episode, and discover titles through people whose taste matches yours.

Role
Product, design, engineering
Timeline
Sep 30 → Oct 9, 2026
Platform
Web · installable PWA
Status
Open beta · free
mogen.fyi landing page with the 'How did it feel?' rating scale Exhibit A
W 1280 × H 960 · @2× CASE NO. AAL–004
mogen.fyi — rate by feeling, not stars

MOGENThe brief

The problem

Film diaries live in one app, games in another, shows in a spreadsheet — and every one of them asks for stars. Taste doesn't fit a five-point scale, and the best recommendations come from people, not charts.

What got built

  1. Films, series and games in one archive
  2. Six feelings, stellar to hated — colour-blind safe
  3. Follows, feed, threads, DMs and taste twins
  4. Episode tracking, Letterboxd import, PWA

MOGENHard part 1 of 4

Licences, enforced in SQL.

Obstacle

Nine catalog providers means nine sets of terms — and metadata must not outlive the licence it arrived under.

Fix

Live ingestion needs an allowlisted provider and a recorded policy revision. Database views hide expired metadata on every read without deleting anyone's history, and snapshots age out after 90 days.

5 of 8 media kinds built but held back pending licensing
Proof
CASE NO. AAL–004

MOGENHard part 2 of 4

From 51 seconds to one.

Obstacle

On first deploy, a title page took about 51 seconds to render.

Fix

The credits query kept rescanning creators; fixing it brought the page to about a second. The same sweep then cut the episode loader from 8 queries to 3 and recommendations from 10 to 2.

1.06 s title page, down from ~51 s
Proof
CASE NO. AAL–004

MOGENHard part 3 of 4

Taps that time-travel.

Obstacle

Fast taps raced each other: an older rating could overwrite a newer one, and sending a message could skip an unseen reply.

Fix

Per-resource write queues, transaction locks and a delivered-message read cursor. The migration was rehearsed on a disposable clone of production before it touched the real thing.

7 interaction bugs found and closed in one audit
Proof
CASE NO. AAL–004

MOGENHard part 4 of 4

Tested on an actual phone.

Obstacle

On iOS Safari, font-glyph icons rendered as missing-character boxes, and the landscape keyboard squeezed search results into a 130-pixel sliver.

Fix

Inline SVG icons, a search dialog that follows the visual viewport, a pass on a physical iPhone — and layouts checked from 320 to 3,840 px at 200% text.

262 browser tests passing

MOGEN search open in landscape on an iPhone, with results visible above the keyboard Exhibit C
W 852 × H 393 · @3× CASE NO. AAL–004
Landscape search on a physical iPhone, results above the keyboard

MOGENBlueprint

Server components by default; anything personal streams in. Browsers never touch the database.

Stack

App
Next.js 16 · React 19 · Tailwind v4 · oRPC
Data
Neon Postgres · Drizzle · pg_trgm
Jobs
Inngest · Upstash Redis
Platform
Vercel · Cloudflare R2 · Resend · Better Auth
MOGEN architecture Browsers and the PWA hit a Next.js app built on server components, which calls typed RPC and REST endpoints backed by core services writing to Neon Postgres. Inngest jobs rebuild trending and similarity tables and sync nine catalog adapters, which draw rate-limit tokens from Upstash before fetching from external catalogs. Browser / PWA server-rendered Next.js 16 RSC · cache tags oRPC + REST 84 procedures Core services transactional writes Neon Postgres 35 tables Inngest jobs trending · similarity Catalog adapters ×9 · license-gated Token buckets Upstash Redis TMDB · IGDB · … external catalogs one transactionsynctoken check
  1. Clients
    • Browser / PWAserver-rendered
  2. App
    • Next.js 16RSC · cache tags
    • oRPC + REST84 procedures
    • Core servicestransactional writes
  3. Data
    • Neon Postgres35 tables
    • Token bucketsUpstash Redis
  4. Jobs
    • Inngest jobstrending · similarity
    • Catalog adapters×9 · license-gated
  5. External
    • TMDB · IGDB · …external catalogs
Not to scale DWG. AAL–004

MOGENReceipts

Eight days, itemised.

  1. 8 days first commit to open beta
  2. 707 tests: 445 unit + 262 browser
  3. 84 typed RPC procedures
  4. 35 tables, 65 indexes
  5. 9 catalog adapters
  6. 42 pages
  7. 320–3,840 px layouts verified at 200% text

MOGENMethod

Four hours to a first build. Eight days to earn it.

The first working version — schema, nine catalog adapters, design system, auth, social graph, messages, discovery — came out of a single Claude Code session in under four hours. The rest of the week was the real work: licensing review, migrations rehearsed on production clones, a concurrency audit and device testing, with Codex on later branches.

Agents

  • Claude Code
  • Codex
  1. spec
  2. plan
  3. build
  4. verify
  5. ship

Every change clears

  • CI on Postgres 17
  • 262 browser tests
  • axe per route
  • Real-device pass
  • Migration rehearsal
Process
CASE NO. AAL–004

MOGENEnd of file

End of file.

Capabilities on file

  • Product design
  • Editorial design systems
  • Next.js 16 RSC
  • Social-graph modelling
  • Data licensing
  • Query optimisation
  • Concurrency-safe UI
  • Real-device QA
Next case
CASE NO. AAL–003
TessaroCase AAL–003 Fine-tune a model. Get a verdict. Open case file