Fits App

iOS AppCo-Founder & CTO2023

A fashion-centric social network designed to celebrate personal style and drive fashion discovery — a place to showcase outfits, gain insight, and take inspiration from a global community.

Role
CTO & Co-founder
Duration
May 2023 – Present
Users
10K+
Fits AppFits App

Selected problems

A feed that doesn't jump while you read it

The home feed is a waterfall: variable-height images in staggered columns, which is the right shape for outfit photography and the wrong shape for UIKit. There is no built-in layout for it, so it was written from scratch — programmatic UI throughout, SnapKit for constraints, no storyboards.

The hard part of a waterfall is not placing the tiles. It is that heights are unknown until images resolve, so a naive implementation reflows under the user's thumb mid-scroll and loses their place.

Recommendations by vibe, not by recency

A model vectorises each image, reading background, colour, text and composition. A custom Postgres image queries those vectors directly, so the feed can surface posts with a similar feel — connecting people with content that matches their style rather than whatever is newest.

The response from users centred on this and on the clarity of the interface, which are the two things the product was actually betting on.

Vector similarity in the Fits feedVector similarity in the Fits feed

A shared outfit that isn't a dead link

The web companion shows recent top fits on the home page, and turns profiles into portfolios that work outside the app. Dynamic embeds mean a shared profile or outfit unfurls as a rich preview rather than a bare URL — which is where most of the cross-platform engagement came from, and the single change that moved reach hardest.

The Fits web version

Stack

Design

Figma for wireframes, mockups, and interactive prototypes across mobile and web platforms.

Frontend

iOS app built with Swift and UIKit, implementing a programmatic UI using SnapKit. Custom components including a waterfall layout for the home feed.

Backend

Scalable backend in Go, with PostgreSQL for storage and Redis for caching. Custom authentication, push notifications, load balancers, an admin panel, and full unit test coverage. Containerised with Docker across staging and production.

DevOps

GitHub Actions for CI/CD into staging and production, Docker images on Amazon ECR, and automated testing workflows to hold code quality across deployments.

Impact

Fits passed 10,000 users within a few months of launch, with a global spread that gave the feed genuinely different cultural reference points to draw from.

The web version and its dynamic embeds moved the needle hardest on reach — a shared outfit stopped being a dead link and started being a preview worth clicking.

Reflection

Building Fits meant owning the whole surface — design, iOS, a Go backend, the ML pipeline and the deployment story — and the most useful lesson was how much of the product lived in the parts nobody sees. The feed only feels effortless because of the vector work behind it.