Skip to content
Back to Work
07Web App

JunkZip: A vetted junk-removal directory we built and operate ourselves

A paid directory of vetted junk-removal companies across Miami-Dade: hauler onboarding with document review, zip-code listings with per-area caps, subscription billing, and an admin console with a full audit trail. Designed, built, and run by 0ARCH.

client
0ARCH (in-house product)
industry
Directory
shipped
May 2026
status
shipped
Next.jsCloudflare WorkersD1PrismaStripe
JunkZip: A vetted junk-removal directory we built and operate ourselves: 0ARCH project screenshot
sec.01

sec.02

Why we built it

Most "find a junk hauler" searches in Miami-Dade end up on a national lead broker that sells the same lead to five companies at once, or on a directory padded with businesses nobody ever vetted. We wanted a cleaner model: a small number of vetted haulers per zip code, customers who tap to call them directly, and no lead resale. So instead of pitching it to a client, we built it ourselves, and we run it.

JunkZip is the studio's own product. It's here because it's built to the same standard we ship to clients, and because we operate it in production every day.

sec.03

What we built

A public directory. Customers search by zip code and reach a short, vetted list of haulers, with a tap-to-call number and no middle layer between them and the business.

A hauler onboarding flow. Sign up, verify by an emailed code, complete a profile, and upload license and insurance documents for review. No account is created in the database until the email is verified, so a typo can never leave an orphan record behind.

An admin review console. Approve, reject, suspend, or reinstate haulers. Reject and suspend require a written reason. Every action writes to an audit log with a human-readable case ID, and that same ID appears in the notification emails, so an incoming support reply maps straight back to the exact log entry.

Subscription billing. Haulers pay monthly to hold a slot in a zip code, with a hard cap on listings per zip so the directory stays useful instead of turning into a wall of names. (Billing is rolling out.)

Transactional email on every state change, each message carrying a support reference so nothing gets lost.

sec.04

How it's built

Next.js on the App Router, deployed to Cloudflare Workers through OpenNext, with Prisma against a D1 (SQLite) database and R2 for document and logo storage. Auth is a six-digit emailed code backed by HMAC-signed, device-bound challenge cookies, the same flow for haulers and admins. Billing runs on Stripe subscriptions. The Miami-Dade catalog of 79 zip areas is seeded with per-zip tiers an admin can override.

sec.05

Why it's in the portfolio

JunkZip isn't client work, and that's the point. It's a product we designed, built, and operate ourselves, on the same stack and to the same standards we hand to clients: multi-tenant data, document handling, payments, an audit trail, and an admin console a non-technical operator can actually run. When we say we build software that holds up in production, this is one we run in production ourselves.

sec.06

The stack

  • Framework: Next.js (App Router) on Cloudflare Workers via OpenNext
  • Database: Cloudflare D1 (SQLite) with Prisma
  • Storage: Cloudflare R2 (license, insurance, and logo uploads)
  • Auth: emailed six-digit code, HMAC-signed device-bound sessions
  • Billing: Stripe subscriptions with per-zip listing caps
  • Email: transactional notifications with support reference IDs
  • Domain: junkzip.0arch.io