Inspiration

Grocery shopping should be pretty simple. Everyone adds what they need, someone goes to the store, and everything makes it home. But a shared list only handles part of that. You still need to know where things are, what someone already grabbed, and whether they saw the thing you added halfway through the trip. That's what Pepperjack is for.

What it does

Pepperjack keeps families synced through the entire grocery trip. Add things throughout the week, then tap Start Shopping when you're at the store. You can mark items found, replaced, out of stock, or skipped without digging through menus. Family members can keep adding things while you shop.

Store aisle information helps you find what you need. Live Activities put the trip on your family's Lock Screens and Dynamic Islands, so they can follow along without opening the app. If the connection drops, shopping changes are queued and synced when it comes back.

How it's built

The app is native Swift and SwiftUI. The backend uses TypeScript, Hono, Cloudflare Workers, and Postgres. ActivityKit and Apple push notifications keep Live Activities updated across the family.

RevenueCat handles purchases, restores, and access to Pepperjack Plus. The app uses RevenueCat offerings for packages and pricing, with a custom SwiftUI paywall. Web purchases go through Stripe and sync back into RevenueCat so access stays consistent.

Challenges

A grocery list gets more complicated when several people are changing it at once. Someone can add an item while someone else checks it off, and the shopper can lose service in the middle of the store. The sync system has to preserve those changes and get everyone back to the same list.

Live Activities are another part of that. Starting a trip on one phone has to reach the rest of the family, keep updating, and end when the trip is done. That takes backend coordination, not just a widget on the shopper's phone.

What matters most

The details matter when someone is actually shopping. Big buttons, quick item actions, and a clear view of what's left make the app useful with one hand on a cart. The goal is to spend less time managing the list and more time getting through the store. No more forgotten bread.

Built With

Share this project:

Updates

Submission history