All Projects/Labels Bank
// 06 / SaaS Platform

Labels Bank

Upload a shipment spreadsheet, get billed for exactly what's in it, pay with a real card, and get finished labels back. The whole thing is server-verified end to end, with a human fulfillment step behind it.

Next.js
React
Node.js
MongoDB
Stripe
Cloudinary
Labels Bank — product screenshot
// Overview

The problem Labels Bank solves.

Businesses shipping in bulk already have their shipment data in a spreadsheet. Turning that into printable labels is usually manual work, expensive third-party software, or a carrier's clunky bulk tool.

Labels Bank cuts that down to: upload the CSV, the server counts exactly how many labels it'll produce, pay a transparent per-label price through Stripe, and an admin fulfills the job and uploads the finished file back.

It's three separate apps — a Next.js customer site, a Vite/React admin panel, and an Express API owning pricing, payments, and fulfillment state — live on Vercel, built over about 20 real dev sessions.

// My Role

End-to-end ownership.

I built Labels Bank end-to-end — replaced an early self-reported label count with actual server-side CSV counting, wired up Stripe's two-sided payment confirmation, and built the admin fulfillment workflow with live order tracking.

Server-side CSV row counting so pricing is mechanically derived, never client-trusted

Stripe payment intents with independent backend confirmation before any order is marked paid

Three-app architecture: Next.js customer site, Express API, Vite/React admin panel

Cloudinary file storage for uploads and finished labels, built for a serverless deployment

MongoDB aggregation-pipeline search and pagination across thousands of orders

// Tech Stack

Tools of choice.

Frontend
Next.js
React.js
Vite (admin)
Backend
Node.js
Express.js
Stripe
Vercel Serverless
Database & Deploy
MongoDB
Cloudinary
Vercel
// Key Features

What makes Labels Bank different.

Server-Verified Label Counting

The server streams and parses every uploaded CSV itself — the customer can't be over- or under-charged based on client input.

Real Stripe Payments

Stripe Elements card entry with a payment-intent flow, confirmed independently by the backend before an order is marked paid.

Human-in-the-Loop Fulfillment

Orders route to an admin panel where staff download the source file, do the label work, and upload the finished result.

Live Order Tracking

Customers and admins both see live status — pending, processing, completed — with automatic email notifications at each transition.

Admin Stats Dashboard

Live counts of pending/processing/completed orders and revenue, with searchable, paginated order management.

CSV Template Download

A one-click, correctly-formatted blank CSV template so customers upload data in the exact shape the system expects.

// Results & Impact

What it achieved.

0
Independently deployed apps
0%
Server-derived pricing
Payment confirmation paths
0+
Real development sessions shipped

Letting the customer self-report a label count and then having the server actually parse the file instead — small change, but it closes the obvious way someone could shortchange their own bill.

Internal engineering note
Internal engineering note
Architecture review
// What's next?

Like what you see?

Check out more of my work, or just reach out if you want to talk about a project.