GetBold is a North-Vancouver-based custom apparel printer. Their public-facing site was a WordPress site with a basic online quoting tool and price calculator. I was hired as a solo full-stack developer to:
Over three years I built the new site with Next.js + TypeScript, migrated content into Sanity CMS, and experimented with InkSoft’s APIs. When we confirmed InkSoft’s limitations blocked essential quoting features, I pivoted to a custom quoting engine. The redesign now runs at getbold-v3.vercel.app and will deploy on Vercel for production.
Critical blockers discovered after ~9 months
| Business need | InkSoft limitation |
|---|---|
| One design, multiple products | Only one product per design |
| Multiple decoration methods | Not supported |
| Custom price overrides & mark-ups | API locked; cannot override pricing |
| Extendable decoration catalogue | No way to add new methods (e.g., patches) |
| Transparent checkout totals | Workarounds via “notes” confused customers |
After presenting these findings, the Manager agreed we should abandon InkSoft and own the entire quoting workflow.
| Layer | Choice | Rationale |
|---|---|---|
| Front-end | Next.js, TypeScript | SEO, file-system routing, React ecosystem, type safety. |
| CMS | Sanity | Real-time collaboration, block-based content. |
| UI | Mantine | Fast theming and rich component set. |
| CI/CD | GitHub Actions → Vercel | Preview environments + global CDN. |
I wrapped up my work on GetBold in April 2026 with the redesigned site and its new quoting engine live; the figures below reflect the version I shipped. (After my engagement ended, the company brought on an external SEO agency that has since revised the hero and footer, so the current live site may differ from the screenshots shown here.)
| Category | Score |
|---|---|
| Performance | 94 |
| Accessibility | 100 |
| Best Practices | 100 |
| SEO | 100 |
Core Web Vitals and lab metrics (desktop):
| Metric | Value |
|---|---|
| First Contentful Paint | 0.3 s |
| Largest Contentful Paint | 0.5 s |
| Total Blocking Time | 130 ms |
| Cumulative Layout Shift | 0.121 |
| Speed Index | 0.5 s |
Beyond the lab audit, real-user data from the Chrome UX Report shows loading performance and interactivity holding steady in Google's "good" range, with a clear step-change in loading performance around the relaunch. Visual stability also sits in the "good" range, though it has started to trend upward (regressing) in the most recent months.