Aaron Perkel

projects / iocon-graphics

Íocón Graphics

Storefront and live order queue for an Irish dance graphics studio

Íocón Graphics screenshot
Status
Live since August 2026, taking real orders
Role
Sole developer for a non-technical client (Aaron Perkel LLC)
Timeline
Jun 2026 – present
Stack
Next.js 15, TypeScript, TiDB Cloud (MySQL), Vercel Blob, Nodemailer, Tailwind CSS

Highlights

  • Live since August 2026; the owner runs orders, the queue, and reviews herself from an admin portal.
  • A public live order queue that emails customers when they move up.
  • A pre-launch gate that opened itself at a fixed launch time, with no redeploy.

Overview

Íocón Graphics makes custom graphics for Irish dancers. The site runs the business: a gallery, an order form for each product, a public waitlist showing where every order stands, moderated reviews, and an admin portal the owner runs day to day.

How it works

Orders

Four order types share one configurable form and one orders table. Pricing per type lives in one module and gives customers an estimate up front; bulk, logo, and custom requests go through a separate inquiry flow.

Live queue

A customer’s place in line is computed from open orders by date. When the owner marks an order done, everyone behind it gets a “you’ve moved up” email. The public waitlist renders live, keeps finished orders visible for 14 days, and estimates the wait from queue depth.

Admin auth

Emailed six-digit codes with signed, stateless cookies; the admin allowlist is re-checked on every request, and sign-in is rate-limited.

Reviews

New reviews stay hidden until approved.

Reliability

Uploads go to Vercel Blob with type checks, size caps, and rate limits. A failed email never loses an order, and with no database or mail server configured the app falls back to in-memory storage and logged email, so it runs locally with zero setup.

Launch

A pre-launch gate held every public page and refused submissions until a fixed launch instant, then opened on its own — no redeploy.

What I’d do next

  • Stripe Checkout in the order flow instead of invoices sent by hand.
  • Structured columns for order details instead of a text field.

Links

← All projects