Cadence Studio
Case study

Pin Me Up Co. 2.0

A pin shop built from scratch around the thing that makes it special: real cork boards of one-of-a-kind pins, sold one tap at a time.

Online shopMembers clubBack officeLive since October 2026
Pin Me Up Co. home page on a desktop: boards sorted by price and the newest single pins
The shop's home page: boards sorted by price, and the newest single pins.

At a glance

Platform
A web shop for phones and computers, nothing to download; the back office runs in the same app
Languages
TypeScript; SQL for the database
Front end
Next.js 16 (App Router) and React 19, styled with Tailwind CSS 4
Back end and database
Supabase: a Postgres database and file storage, with the shop's server code running in Next.js
Sign-in
Supabase Auth, by email link (no password)
Hosting
Vercel, with scheduled jobs on Vercel Cron
Payments
Stripe: cards, Apple Pay and Google Pay
Shipping
EasyPost, for live rates at checkout and shipping labels
Email
Resend, for receipts and order updates
Other
Florida sales tax worked out in the shop's own code, built and ready to switch on
Built in
2026, live since October 2026

What they asked for

Placeholder. What Pin Me Up Co. asked for, in their words, comes from the source pack their team is putting together. Each feature below has a matching placeholder for which part of the ask it answers.

A $12 cork board on a phone: three pins in the cart ringed with numbers, sold pins crossed out

Shop the board

What we built
Every board in the shop is a photo of a real cork board, and every pin on it can be tapped.
How it works
Tap a pin and its card opens with the price and an add to cart button. Pins in your cart get a numbered ring, and pins that have sold are crossed out, so the board always shows what is still there.
Built with
Next.js pages read each board and every pin's state from Supabase's Postgres database, and the database itself holds a pin while someone pays, so two shoppers can never buy the same pin.
Which part of the ask
Placeholder, from the source pack.
My tab on a phone: four pins collected, $80 in total

Running tabs

What we built
A tab for each customer that holds the pins they have bought.
How it works
Collect pins now, from as many boards as you like, and ship them together later in one package.
Built with
The tab lives in Postgres alongside the shopper's account, so it follows them to any device until they ship it.
Which part of the ask
Placeholder, from the source pack.
Trade-in form on a phone: four photos, 16 pins, an asking price per pin Trade-in tracker: pins received, an offer in cash or credit, accepted and on the way

Trade-ins, cash or credit

What we built
A full trade-in system, from the first photo to the offer and the pins arriving.
How it works
Add a few photos of your pins, say how many (ten or more) and your asking price per pin. The shop makes an offer in cash or shop credit, you pick, and a tracker shows each step until your pins arrive.
Built with
Photos upload to private Supabase Storage, so only the shopper and the shop can see them; offers and each step of the tracker are kept in Postgres, and each update goes out by email through Resend.
Which part of the ask
Placeholder, from the source pack.
Checkout on a phone: the address step, filled in from the last order

Checkout

What we built
A short checkout made for phones.
How it works
Your address is filled in from your last order. Pay with Apple Pay, Google Pay or a card, then follow your order with tracking in your account.
Built with
Stripe takes cards, Apple Pay and Google Pay, and card details go to Stripe rather than to the shop. Receipts go out through Resend. Stripe's payment form sits on the shop's own page, and live shipping rates from the EasyPost API show the real postage before the shopper pays. Florida sales tax is built in too, worked out in the shop's own code from the delivery address (the state rate plus the county's surtax), and ready to switch on.
Which part of the ask
Placeholder, from the source pack.
The Board Room: members' cards with names and member numbers Penny, the shop assistant, answering What is the Board Room

The Board Room and Penny

What we built
A free members club, plus Penny, a friendly shop assistant that answers common questions.
How it works
One email and you're in, with no password: the shop sends a link and you tap it. Members can choose to show their card. Penny answers things like how tabs work, how trade-ins work and how to pay.
Built with
Sign-in by email link is Supabase Auth. Penny answers only from answers the shop has written, shown word for word, so a shopper never gets an answer the shop has not written.
Which part of the ask
Placeholder, from the source pack.
The new back office: new orders listed with how many days old each one is

The back office

What we built
Custom operations software for packing and shipping one-of-a-kind pins.
How it works
New orders show how long they have been waiting. A pick list shows each pin on its board, and every label run is checked before anything is bought.
Built with
Admin pages in the same Next.js app, behind sign-in. Labels are bought through the EasyPost API, and scheduled jobs (like releasing pins nobody paid for) run on Vercel Cron.
Which part of the ask
Placeholder, from the source pack.
Built and approved, switching on soon

Screens come from a test copy of the shop with made-up customers. Pin photos and board photos are the shop's own.

How it fits together

  • One custom shopBuilt from scratch for Pin Me Up Co. Works on any phone or computer, with nothing to download.One Next.js app serves the shop and the back office, hosted on Vercel.
  • Boards that stay in stepBoards, tabs, trade-ins and orders are all connected, so a pin that sells is crossed out on its board for everyone.Everything lives in one Supabase Postgres database, so there is one true state for every pin.
  • Trusted paymentsCard, Apple Pay and Google Pay go through Stripe. Card details never touch the shop's own servers.Stripe, which confirms each payment back to the shop's server before an order is marked paid.
  • Sign in by email linkNo passwords to remember.Supabase Auth sends the link; tapping it signs you in.

Placeholder. The rest of the plain-language setup comes from the Pin Me Up Co. source pack.

Why we chose it

  • Next.js on Vercel. Pages load fast on a phone, and every change gets its own preview link to check before it goes live.
  • Supabase. A real Postgres database, so every pin has one true state: once a pin sells, it is sold everywhere at once.
  • Stripe. Cards, Apple Pay and Google Pay through one provider shoppers already trust, with the card details going straight to Stripe.
  • EasyPost. Real postage from the carriers at checkout and labels from the back office, through one connection.
  • Resend. Dependable delivery for receipts and order updates, so shoppers get their emails.

Want something like this for your business?

Tell us about it in a few lines. We'll come back with questions, then a plan and a price.