Skip to content
Back to projects
Platforms & E-commerce
In production
2026

Digital Tech MS

Online print shop with artwork approval and production

Digital Tech MS — Online print shop with artwork approval and production

Context

A print shop sells business cards, banners, stickers and stationery — products where almost nothing has a shelf price and almost everything depends on artwork the customer sends in.

The challenge

Print products have no fixed price: it varies by material, finish, dimensions and quantity, and some combinations only make sense as a custom quote. At the same time, printing is irreversible — wrong artwork approved by mistake becomes material loss, not a bug you patch in production.

The architecture

A pricing engine over configurable options that calculates on the server and recalculates before writing the cart, with an escape hatch into custom quoting when a product has no fixed price. And an artwork flow with explicit approval, which only then releases production.

How the code is organised

The same architectural base as ImpressãoMais3D — a modular monolith by bounded context with the domain layer isolated by an ESLint rule. This codebase was the one that later gave rise to ImpressãoMais3D.

Architecture flow

  1. Configuration

    • Material, finish, dimensions and quantity
  2. Server-side price

    • Recalculated before the cart is written
    • Or a custom quote
  3. Order

    • Items and prices frozen
  4. Artwork approval

    • Explicit: only then is production released
  5. Production

  6. Delivery

    • Shipping or pickup with a code

Engineering decisions

Price calculated on the server

The price never comes from the client. Configurable options feed a calculation engine that runs on the server and is recalculated before the item is written to the cart — the browser cannot negotiate its own discount.

Quoting for what has no price

A product with no fixed price is not left out of the store: it enters through its own quote-request flow that staff answer and the customer accepts, without leaving the same account and order history.

The order as an immutable record

Closing the cart freezes items and prices into an order with its own number and status cycle. What was agreed at purchase time does not change later, even if the catalogue does.

Pickup with a code

Customers choosing in-store pickup get a code that staff redeem at the counter — the order is only marked delivered against that redemption.

Full stack

Next.js 16
TypeScript
Supabase
PostgreSQL
Stripe
Resend
AI SDK
Tailwind CSS v4
Playwright
Vitest
Full articleVariable pricing, artwork and production: how I modeled a print-shop e-commerce without turning everything into exceptions6 min readRead the article