Workflow Automation / 2023–Present
ShelfLabelBuilder
Built a full-stack SaaS web application with companion mobile app that lets retailers design professional shelf labels with a WYSIWYG editor, manage product inventory, and batch-print to both sheet labels (Avery) and thermal printers.

The spark
My father owns a convenience store. I watched him spend three hours updating shelf labels by hand for a weekend sale: scribbling price tags, fighting with Word templates, hoping the alignment was correct. When prices changed again the next week (which happens constantly with alcohol due to distributor fluctuations), he had to redo everything. I knew small retailers deserved the same professional labeling capability that big chains have.
The problem
Independent liquor and convenience store owners, typically 1-3 person operations without IT departments, spend 2-4 hours weekly repricing products manually with handwritten tags or generic Word templates.
- Who it affects
- Independent liquor store owners, convenience store operators, and specialty retail shops, typically 1-3 person operations without IT departments.
- Previous workflow
- Hand-written price tags, generic Word/Excel templates printed on paper, or expensive industrial label printing systems ($2,000+) designed for enterprise.
- What it costs
- 2-4 hours weekly repricing products manually. Inconsistent branding, illegible handwriting, errors in prices, no barcode support. Big chains have professional tools; small retailers are stuck with handwriting or expensive enterprise solutions.
The solution
Built a full-stack SaaS web application with companion mobile app that lets retailers design professional shelf labels with a WYSIWYG editor, manage product inventory, and batch-print to both sheet labels (Avery) and thermal printers.
Outcome
~2-3 hours/week saved per user on label creation; 50,000+ built-in product catalog; $129/year SaaS launched with 14-day free trial; actively deployed on Vercel/Supabase.
What I learned
Building a WYSIWYG editor that bridges on-screen design and physical print output taught me that the hardest problems aren't in the fancy features; they're in the last 10% of pixel-perfect accuracy that users unconsciously expect.
Technical decisions
- React 18 + TypeScript + Vite
- Rich interactivity for the visual template editor; TypeScript for type safety across 60+ components; Vite for fast dev/build
- Wouter
- Lightweight (1.5KB) router; React Router was overkill for this SPA
- TanStack Query
- Automatic caching, background refetching, and optimistic updates for real-time queue/inventory sync
- Express.js + Drizzle ORM
- Express for familiar REST patterns; Drizzle for type-safe queries without heavy ORM overhead
- PostgreSQL (Supabase)
- Reliable RDBMS for relational data; Supabase gives managed hosting + built-in auth + row-level security
- Stripe
- Industry standard for SaaS subscriptions; easy webhook handling for subscription lifecycle
- React Native (Expo)
- Share knowledge from React web; Expo simplifies camera/barcode scanning integration
- jsPDF + JsBarcode + qrcode
- Client-side PDF rendering eliminates server load; precise inch/mm measurements for label accuracy
The hard part
Getting the WYSIWYG template editor to render labels exactly as they would print, especially with barcodes at different DPI levels and text auto-shrinking to fit boxes without cutting off. Solved with: Pixel-perfect rendering system that converts between logical units (inches/mm) and screen pixels at a consistent DPI reference. Canvas-based barcode rendering with configurable bar width ratios matching thermal printer output. Text auto-shrink algorithm that iteratively reduces font size until text fits within bounding boxes with optional multi-line wrapping. The template editor component alone is 84KB (~1,941 lines) because of complex state management and real-time preview calculations.
Next steps
- Bluetooth thermal printer integration via mobile app (direct print without PDF)
- Multi-store/multi-user support for franchise operations
- AI-powered label suggestions based on product category and season
- Distributor price integration to auto-update prices from supplier feeds
- Label template marketplace where users can share/sell custom designs