Case study 01  ·  Client  ·  Live

The Artitech

A small decor studio was selling through a marketing page that sent buyers to Etsy. I replaced it with one platform that runs the whole business: the storefront, in-person sales, orders, stock and the books.

RoleDesign, build and ongoing maintenance. Solo, end to end.
TimelineJanuary 2026 to now
StackPython, Flask, PostgreSQL, Stripe, Square, Mailgun, Railway
Live sitethe-artitech.com ↗
the-artitech.com
The Artitech storefront home page
1,000+automated tests, run before every release
840+commits since February 2026
300+routes across storefront and admin
36admin modules, from orders to year-end
01The problem

Every sales channel lived in a different tool.

Online orders went through Etsy, market and in-person sales went through Square, and everything else lived in spreadsheets and email. Nobody could answer a simple question like "what did we actually make this month?" without an evening of copying numbers between tools.

Before
  • ×Marketing page linking out to Etsy
  • ×Stock counted by hand
  • ×Square and online sales never reconciled
  • ×Invoices and receipts made one by one
After
  • →Direct checkout, no marketplace fees
  • →Stock updates itself from every sale
  • →Every channel lands in one set of books
  • →Branded PDFs generated automatically
02What I built

What the platform does

The customer only sees the storefront. Behind it is the system the owner runs the business from every day.

01

Storefront

  • →Catalogue with size and colour variants
  • →Stripe checkout and customer accounts
  • →Order tracking links sent by email
  • →Promo codes and product waitlists
02

Operations

  • →Square POS sync for markets and pop-ups
  • →Custom enquiries that convert into orders
  • →Quotes, invoices, receipts and packing slips
  • →Bill-of-materials costing and production runs
03

Finance

  • →Profit and loss, balance sheet, profitability
  • →Expenses, payouts and per-account ledgers
  • →Year-end reports, exportable to CSV and PDF
  • →Role-based access with a full audit log
03The hard part

Keeping stock right across five sales channels

A piece can sell online, at a market, through a custom enquiry, as a manual order or on the Square terminal. Each path used to touch stock differently, so counts drifted. I moved every path onto one inventory service with the same lifecycle, so a sale reserves stock once and removes it once, no matter where it came from.

WebsiteSquare POSMarketsCustom enquiryManual order
1
Paid

Any channel hands the order to the same service.

2
Reserved

Available stock drops. Physical stock stays put. committed += qty

3
Fulfilled

Stock comes off exactly once, by exactly the quantity sold.

4
Shipped

Customer gets a tracking link and a branded receipt.

Cancel before fulfilment: the reservation is released and nothing else moves.
Refund after fulfilment: the exact quantity goes back, so every round trip ends where it started.
04How it's built

Engineering decisions

Money in cents

Every amount is stored as a whole number of cents. No floating point anywhere near a price.

Tested before it ships

The full suite runs against a sandbox database before anything reaches production.

Permissions by item

Roles control access to 42 individual areas, from website orders to the balance sheet.

Idempotent webhooks

Stripe and Square can resend events safely. An order is never counted twice.

Shop-local time

Reports, receipts and daily totals follow Toronto time, including daylight saving.

Brand on every page

Invoices, receipts and slips are generated as PDFs in the studio's own type and colours.

05Screens
The Artitech admin dashboard
The daily dashboard: what needs attention, what sold, what's running low.
An order page in the Artitech admin
One order page for every channel, with its full history.
The Artitech profit and loss statement
Profit and loss across online and in-person sales.

The business runs on one system now, and the books reconcile without anyone copying numbers.

The studio sells online, at markets and on commission without switching tools, and the owner can see how the business is doing on any given day. I still maintain it and ship improvements as the business grows.

Abbas Virjee · Toronto, Canada[email protected]