App launch project · Designed and built solo

Yardie

A friends-only marketplace for selling and giving away things within your own circle. No strangers, no public feed, no spam. I designed it, then built it into a working app.

Role
Solo designer and builder
Platform
iOS & Android (React Native + Expo)
Tools
Figma, Claude Code, Supabase
Timeline
May 2026 – Present
Status
Live, with real users testing
Three Yardie screens: a friend's item page with Dibs, the My Yard grid, and the AI-assisted List an Item flow

The problem: the group chat is a terrible marketplace

When a friend group wants to pass things along, everything gets dumped into a group chat. Photos get buried, items get missed, and nobody can track who wanted what. Two friends want the same lamp and someone has to play referee.

The obvious alternatives are worse. Facebook Marketplace, OfferUp, and Depop are built for stranger transactions: reach, anonymity, and protection against people you will never meet. That trust model is exactly wrong for trading with people you already know.

The insight that drove the design: existing platforms solve discovery for strangers. Friends need the opposite: a circle closed by default, where the etiquette of sharing is designed into the product itself.

Two diagrams: a public marketplace as scattered strangers you must verify one by one, versus Yardie as a small closed circle of already-trusted friends
Two trust models: verify every stranger, or start from a circle that is already trusted

The solution

A small, invite-only marketplace scoped entirely to your own people.

My Yard: a grid of the owner's listed items
My Yard — your items, your space
Friend's Yard feed showing friends and their items
Friends’ yards — browse your circle only
Friend's Yard Detail page: hanging Boston fern listing with Dibs and Like actions
Friend’s Yard Detail page

Story flow: how a sweater finds a new home

The core loop, end to end, including the part most marketplaces ignore:

Every design decision below exists to keep this loop light, fair, and warm.

The Yardie core loop: list, discover, dibs, confirm, with a back-out path that promotes the person with 2nd Dibs
The core loop, with the back-out path built in: 2nd Dibs quietly self-heals the line
List an item screen before photo upload
Listing starts with a photo
Listing screen with AI-generated title and description
AI pre-fills title and description; what it can’t see, like size, stays yours to fill
Messages screen for coordinating handoff
Chat coordinates the handoff

Design decisions

1Trust by inverting the marketplace model

Most commerce apps start public and add safety features. Yardie starts private. Removing the public feed was the core product decision; everything else follows from a closed, known circle.

2“Dibs” and “2nd Dibs” instead of like / buy

Standard marketplace language (favorite, add to cart, buy now) carries stranger-commerce baggage. Dibs and 2nd Dibs model what friends actually do: calling dibs, getting in line, and stepping aside gracefully.

3A warm, hand-drawn visual language

Dusty pink, hand-drawn icons, and item cards that read more like paper tags than product listings. The target tone is “sharing clothes with your best friend,” not “checkout flow.” Warm without tipping into childish.

4Distribution as part of the design

Every user gets a permanent share link that opens a read-only web view of their yard. Friends can browse with no install and no account; signing up through the link makes you friends automatically. The invite is the link, which removes the biggest barrier for people who would never install an app just to give away a sweater.

Process: sketch, build, test on real devices, rebuild

I started with paper sketches and Figma flows, then moved into a working React Native build early, using Claude Code to keep iteration fast. Instead of polishing static mockups, I tested real flows on real phones, found what broke, and rebuilt. The AI title feature was reworked after early tests showed people would not type descriptions at all.

Early wireframe sketches on paper
Early wireframe sketches
Wireframe sketch of core flows
Mapping the core loop
The intro, live: hand-drawn identity in motion

Design system

Yardie’s visual language is built from two voices: Knewave, a hand-painted display face used for titles and moments of personality, and Inter carrying everything functional. The palette leads with one signature pink and stays quiet everywhere else.

Font · TitlesKnewave

Yardie

Font · BodyInter · Regular / Semi Bold / Bold

Aa Bb Cc 123

Title32px

My Yard

Heading22px

Hanji’s Yard

Body16px

$0 Blue Cup · 1 Dibs | 3 Likes

Yardie PinkHex: FFB7E9
InkHex: 313131
Soft GrayHex: D9D9D9
Alert RedHex: FF3E41
Paper WhiteHex: FFFFFF

Where it stands

Yardie is live today: real accounts, real listings, AI-assisted uploads, friendships, and messaging, backed by Supabase with row-level security. Friends are testing it on Android builds and through the share-link web view. The current focus is dibs confirmation and the back-out path.

Built with React Native, Expo, TypeScript, Supabase, and the Claude vision API for listing generation.

What this project taught me

Most new users open Yardie from a link a friend texted them: they come with social context but no product context. That reshaped the design. The landing makes it clear whose yard you’re looking at, browsing stays open, and login appears only when you try to interact.

And because I design and build at the same time, a failed test becomes a rebuilt flow in days. Execution is no longer the barrier between an idea and something real in front of users.

Isometric spread of Yardie screens: intro, sign up, yards, listings, item detail, messages, and profile
The full picture: intro to profile, one warm system