E-commerce · 3D-print workshop · 2026-05
thingit.store
A one-printer 3D-print workshop in KL with a catalog of 8 things, a custom-quote flow, and a /guides hub built for AI-search citation.

Results
Measurable outcomes, not adjectives.
- Routes prerendered
- 34
- Pillar guides shipped
- 8 · 8,372 words
- Time from brief to launch
- 7 days
- Schema entities live
- Org · LocalBiz · WebSite · Product · BreadcrumbList · FAQPage
The story
The brief
A sole-proprietor workshop in KL — one Bambu A1 mini, one operator, one filament colour at a time. Needed a store that read as a real workshop (not a generic Shopify) AND a quote flow for custom prints. Stripe Malaysia verification dragged through Day 6, so payments pivoted mid-build to DuitNow QR + a Touch'n Go bank backup without losing the launch window.
What I built
Workshop-catalog brand-system (cream surface · charcoal text · filament-orange accent · blueprint-lane drafting marks) across 34 routes: home with animated layer-stack cube, /shop with 8 SSG product pages, /custom with quote-request form, /checkout flow with DuitNow QR + WhatsApp screenshot CTA, /track for order status, /guides hub for AI-search citation. Supabase backs orders + custom_quotes with auto TI-NNNN / CQ-NNNN sequences and RLS-enabled tables. Resend fires templated emails at every stage transition; `npm run order:advance` is the operator's CLI to walk an order through pending_payment → paid → printing → shipped → delivered.
Built for AI citation
robots.txt, sitemap.xml, llms.txt, and llms-full.txt all served from the App Router so they stay in sync with the route tree. Schema-org coverage: Organization + LocalBusiness + WebSite injected as a single @graph in the root layout; Product + Offer (availability: MadeToOrder for print-on-demand, NOT InStock) + BreadcrumbList on all 8 /shop/[slug] pages; FAQPage on /faq with 7 Q&A pairs decoded to match visible content. Bing Webmaster verified. 8 pillar guides (~8,400 words) cover FDM tolerance and layer height, PLA / PETG / TPU material selection in Malaysian humidity, the Mt Kinabalu coaster case study from SRTM elevation data, first-time-buyer guide, catalog-vs-custom decision aid, where-to-buy filament in KL, FDM finishes for food-adjacent items, and print-in-place mechanisms.
Why the architecture matters
A single-printer workshop can't fake scale, so the site doesn't pretend to. "Made to order" is the schema-honest signal — buyers see realistic 3–5 day lead times, the operator sees a one-printer-one-job queue. The 8-guide content layer compounds: each article is a topical-authority anchor for queries Malaysian customers actually search ("is PLA safe for hot drinks", "where to buy Polymaker in KL"), and the cross-link mesh keeps readers moving toward /shop or /custom without dropping out to a generic Shopify funnel. Page weight on /shop is sub-300KB; LCP is well under a second on the desktop hero.
What's next
Auto-quote engine for /custom (Phase 3 deferral): parse uploaded STL, run a slicer-headless cost estimate, return a tentative quote within minutes instead of hours. Programmatic SEO for "3D printing [thing] Malaysia" long-tail queries seeded from the 8 catalog SKUs. Google Business Profile claim once the workshop has a stable single-address listing. Off-platform brand signal expansion via Reddit r/3Dprinting and LinkedIn workshop notes.
Built with
- Next.js 16
- React 19
- Tailwind v4
- Supabase
- Resend
- Vercel