Social app·2026
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·The 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
- 01Films, series and games in one archive
- 02Six feelings, stellar to hated — colour-blind safe
- 03Follows, feed, threads, DMs and taste twins
- 04Episode tracking, Letterboxd import, PWA
MOGEN·Hard 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.
MOGEN·Hard 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.
MOGEN·Hard 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.
MOGEN·Hard 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·Blueprint
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
- Clients
- Browser / PWAserver-rendered
- App
- Next.js 16RSC · cache tags
- oRPC + REST84 procedures
- Core servicestransactional writes
- Data
- Neon Postgres35 tables
- Token bucketsUpstash Redis
- Jobs
- Inngest jobstrending · similarity
- Catalog adapters×9 · license-gated
- External
- TMDB · IGDB · …external catalogs
MOGEN·Receipts
Eight days, itemised.
- 01 8 days first commit to open beta
- 02 707 tests: 445 unit + 262 browser
- 03 84 typed RPC procedures
- 04 35 tables, 65 indexes
- 05 9 catalog adapters
- 06 42 pages
- 07 320–3,840 px layouts verified at 200% text
MOGEN·Method
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
- 01spec
- 02plan
- 03build
- 04verify
- 05ship
Every change clears
- CI on Postgres 17
- 262 browser tests
- axe per route
- Real-device pass
- Migration rehearsal
MOGEN·End 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