Case study
mySocials
Link-in-bio pages with a custom URL, themes and click analytics.
- Role
- Design, frontend, backend
- Stack
- Next.js · Turso · Drizzle · R2
The problem
Link-in-bio pages usually treat photos and videos as an afterthought. For creators the media is the page. The goal was a link-in-bio where a wall of real videos and photos loads fast, accepts whatever a phone records, and still looks premium.
What I built
- Dashboard editor for profile, tabs, media and links, with a live phone preview of the public page.
- Tabs as photo grids or video walls, reordered by drag and drop.
- Sixteen preset networks from an @handle, or fully custom links.
- Instagram import to fill a page in one step.
- Paid publishing with Polar; viewing a page is never gated.
- Search controls: sitemap of published pages, structured data per profile, and a per-page switch to hide from search engines.
Key decisions
Video transcoded in the browser
Videos are converted to H.264 MP4 up to 1080p on the user's device with WebCodecs, then uploaded straight to R2 with a presigned URL. That accepts any format a phone records and skips the 4.5 MB request limit of serverless functions.
Images normalized twice
Images are compressed to WebP in the browser before upload and normalized on the server to 720 px. HEIC photos are decoded on the server, so no upload is rejected for its format.
A locked design system
One accent color used only as a thread (links, focus, active states), never on buttons. Hierarchy comes from type, spacing and contrast, which keeps every user's page coherent whatever accent they pick.