Carpentry Business — Client Project
Portfolio-Forward Web Presence for an SA Trade Business
Client project: a craft-first website for a South African carpentry and joinery business. Portfolio gallery above the fold, WhatsApp deep link CTA as primary conversion, zero dependencies for long-term client maintainability.
Serving
SA trade business market
Market
Word-of-mouth → digital conversion
Problem
Invisible online despite excellent craft
Result
Live and used for client acquisition
What needed solving
SA trade businesses — carpenters, joiners, furniture makers — are exceptional at their craft and invisible online. Word-of-mouth caps their growth at the size of their immediate network.
How I built it
Portfolio gallery above the fold — not the pitch, not pricing, the work. WhatsApp deep link CTA: wa.me/27xxx that converts immediately by meeting SA clients where they already communicate. Zero dependencies for maintenance-free longevity.
The carpentry project's most important decision was made before writing a line of code: the portfolio gallery goes above the fold. Not the pitch. Not the pricing. The work. In the South African trades market, the product sells itself — if you can see it. The WhatsApp CTA insight came from observing client communication patterns: SA clients in the SME market don't check email forms. They message on WhatsApp. A wa.me deep link — pre-populated with 'Hi, I saw your website' — converts leads immediately by meeting them in the channel they already use. This became a rule: every SA client website should have a WhatsApp deep link as its primary CTA. It is now standard across all SME client work.
What This Taught Me
- 1
Portfolio-forward layout: the craft goes above the fold in trade market websites
- 2
WhatsApp is the SA SME conversion CTA — wa.me deep links outperform contact forms
- 3
Zero dependencies is a service quality feature for non-technical clients
- 4
Client work seeds product rules: every WhatsApp CTA lesson eventually became AdminOS architecture
HTML5
Zero dependencies — trade business owner cannot maintain a React app
CSS3
Responsive gallery with aspect-ratio locks, lazy loading
Vanilla JavaScript
WhatsApp deep link integration, image lazy load
# Carpentry Business — Client Project > Portfolio-Forward Web Presence for an SA Trade Business ## Project Context **Category:** Client Work · SME · Conversion Design **Status:** Live · 2025 **Author:** Nandawula Regine Kabali-Kagwa — East London, South Africa **Company:** Mirembe Muse (Pty) Ltd · Reg: 2026-005658 ## Stack ``` HTML5 # Zero dependencies — trade business owner cannot maintain a React app CSS3 # Responsive gallery with aspect-ratio locks, lazy loading Vanilla JavaScript # WhatsApp deep link integration, image lazy load ``` ## Architecture Notes - All data mutations validated server-side via Next.js API routes - Row-Level Security enforced at database level (Supabase) - Mobile-first, PWA-ready, offline-tolerant where connectivity is unreliable - PayFast integration for ZAR-native payments (no USD conversion) - SEO-optimised: metadata, JSON-LD, canonical URLs, sitemap - POPIA compliant — data minimisation + user consent by design ## Environment Variables ```env NEXT_PUBLIC_SUPABASE_URL= NEXT_PUBLIC_SUPABASE_ANON_KEY= SUPABASE_SERVICE_ROLE_KEY= ANTHROPIC_API_KEY= NEXT_PUBLIC_PAYFAST_MERCHANT_ID= NEXT_PUBLIC_PAYFAST_MERCHANT_KEY= PAYFAST_PASSPHRASE= RESEND_API_KEY= ``` ## Links - Live: https://carpentary-os-demo.vercel.app/ - GitHub: https://github.com/Nanda-Regine/carpentart-os-demo - Portfolio: https://creativelynanda.co.za/projects/carpentry-business --- Built from East London, South Africa · Nine months · Zero to production
More Projects
Interested in similar work?
Let's discuss how I can build something like this for your business.
Let's Talk