Back to work

Web AppsTwillink

Twillink

Link in Bio

A modern link-in-bio platform that lets creators and professionals consolidate all their important links into a single, beautifully customizable page—making it easy for audiences to discover and connect across every platform.

Built with
TanStack Start · Tailwind CSS · Prisma ORM · PostgreSQL
Twillink screenshot

Case study

Twillink is a link-in-bio SaaS where a creator's entire online presence lives behind a single URL. I worked across the stack: the public profile pages that audiences land on, the editor that creators live in, and the multi-tenant data layer underneath both.

Role
Full-stack Engineer
Timeline
2024 - Present

01

The problem

A link-in-bio page is opened from a social bio on a phone, usually on a slow connection, and it gets exactly one chance to load before the visitor taps back. That constraint shaped every decision on this project.

  • Creators scatter their presence across Instagram, TikTok, YouTube, and a shop - audiences lose the thread and creators lose the click.
  • Most existing tools force users into rigid templates, or lock real customization behind a paid tier.
  • Public profile pages rendered purely on the client are invisible to search engines, so creators get no organic discovery from their own page.
  • Every creator page is public and served from shared infrastructure, so a single slow query on one profile degrades the experience for everyone.

02

The solution

01

Server-rendered profiles

Public /username pages are server-rendered through TanStack Start so they paint fast on mobile networks and are fully crawlable, turning each profile into an indexable landing page instead of an empty SPA shell.

02

Live-preview page builder

Creators reorder, rename, and restyle blocks with instant optimistic feedback - the preview reflects the change immediately while the write is reconciled in the background.

03

Multi-tenant data model

Users, pages, blocks, and themes are modeled in PostgreSQL through Prisma, with handle lookups indexed so resolving a profile stays a single fast query no matter how many tenants exist.

04

Non-blocking click analytics

Link clicks are recorded on a path that never delays the redirect, so creators get per-link insight without the visitor ever paying for the tracking.

05

Themes as design tokens

Customization is expressed as Tailwind-driven tokens rather than one-off templates, so a new theme ships as a token set and cannot break a creator's layout.

06

Performance as a budget

Query optimization, database indexing, and systematic refactoring were treated as recurring work rather than a one-time pass, keeping response times flat as the feature set grew.

03

Results & impact

Faster API responses
35%
  • Improved API response times by 35% through query optimization, database indexing, and systematic refactoring.
  • Profile pages are server-rendered and crawlable, so creators gain organic discovery from a page that used to be invisible to search.
  • Editing feels instant: the builder applies changes optimistically and reconciles them in the background, removing the save-and-wait loop entirely.
  • New themes ship as token sets rather than bespoke templates, cutting the cost of every future customization option.

04

Tech stack

Frontend

  • TanStack Start
  • Tailwind CSS

Data

  • Prisma ORM
  • PostgreSQL

05

Lessons learned

  • Rendering strategy is a product decision, not an implementation detail. Choosing server rendering for public profiles was what made creator pages discoverable - no amount of frontend polish would have replaced it.
  • Optimistic UI is worth the reconciliation complexity in an editor. Users judge a builder by how fast it feels, and a background write that occasionally needs to roll back beats a spinner on every change.
  • Indexing the access path that actually runs in production - handle lookup - mattered far more than broad optimization. Measuring first is what produced the 35%, not guessing.