Mark Norman · Cape Town · Frontend architect

A proper website in two days. Architected, not assembled.

In my spare time I build React platforms and useful tools, and I give small businesses a proper website in two days: hand-built, fast, secure and theirs to edit.

Mark Norman

Build time

2 working days

Server response, cached

0.10 seconds

Bloat to slow it down

0 page builders

Security and SEO

Built in not bolted on

The two-day build

Forty-eight hours, accounted for.

Speed is not the trick. The trick is knowing exactly what a small business site needs and doing nothing else. This is the schedule a build runs on.

Case study · Tandre Fruit Supply

Elementor out. Custom block theme in. Built on the two-day schedule above.

A national fruit distributor in Somerset West. The old site was a page-builder template. The new one is a hand-written WordPress block theme with a fruit catalogue the client edits themselves.

The tandrefruit.co.za homepage: an orchard photo behind the words Quality today, fresh tomorrow

Before

  • Page-builder template, heavy and slow
  • Every edit needed a developer
  • Invisible to Google as a business
  • Admin usernames exposed, spam comments open

After

  • Hand-built theme, nothing bloating it
  • Fruit and seasons edited by the client
  • Shows up as a business in Google search
  • Locked against common hacks and spam

0.10s

cached server response

6/6

security-conscious: CSP, HSTS, frame, sniff, referrer, permissions

100%

of the content editable by the client, with a written admin guide

0

page builders, usernames exposed, or open comment forms

The interesting part was not the design. It was giving a client with no technical staff a catalogue they can maintain: four fruit types, each with a season, a colour and a photo, drawn into a seasonal calendar. Change a month in the admin and the calendar redraws. Nobody phones a developer to update a season.

Everything was measured before it was called done: load time, security, how Google reads the site, the cache. The numbers on this page come from those checks.

How I use AI

AI writes the first draft. I decide what ships.

“AI-powered” means nothing on its own. This is the actual division of labour on a build.

Generation

AI does the typing

Templates, patterns, CSS, copy drafts, the boring PHP. Working with a coding agent, a theme that used to take a week takes an afternoon.

Judgement

I make the calls

Architecture, what the client can safely edit, security posture, what to leave out. Fourteen years of production systems is what stops a fast build being a fragile one.

Verification

Nothing ships unmeasured

Every claim on this page was checked with a real request, a real security scan or a real Google test. If it cannot be verified, it does not get written down.

At HyveMobile I am a core engineer on a vision-based generator, built on the Anthropic SDK, that turns design input into production React components, and I help shape the team’s AI-assisted coding standards. Anyone can prompt, copy, paste and go. The craft is understanding what comes back, and refining it until it is right.

Built with AI

Useful tools, specified by me, written with AI.

The same method as the two-day sites, pointed at my own problems. I decide what the tool does and how it behaves; the AI writes the first draft of the code; I review what comes back until it is right.

Training app · installable, works offline

Unlock Mobility

A mobility programme that runs itself. One movement on screen at a time, timed and logged, with a record of every session. Built for a gym with bad signal: everything saves on the phone first and syncs later.

  • Runs the session in order; holds count down, efforts count up
  • Remembers last weights and charts the right measure per movement
  • Admin edits everything from the phone; guests get a read-only view
  • Exercise clips uploaded from the phone and re-encoded in the browser

Stack

  • Next.js 16
  • React 19
  • TypeScript
  • Tailwind CSS 4
  • Neon Postgres
  • Drizzle ORM
  • IndexedDB
  • Installable PWA
  • Vercel
  • Claude Code

Private dashboard · behind a login

HQ

An operations dashboard that does the checking so nobody has to. Every morning it reads about 35 employers' hiring boards, scores what is new, and sends one email only when there is something to act on. Budget and goals live alongside.

  • Reads applicant-tracking APIs directly and diffs careers pages that have none
  • Scores new listings against keywords and files the poor fits out of the way
  • Morning digest stays silent unless something is new or a follow-up falls due
  • Deploys to shared hosting with no command line; scheduled jobs run over authenticated HTTPS

Stack

  • PHP 8.1
  • SQLite
  • PDO
  • cURL
  • Vanilla JS
  • No framework
  • No build step
  • cPanel cron
  • Claude Code

Other builds

Small businesses, done properly.

Sites for businesses that trade on reputation and phone calls: property, education, tourism, hospitality. Each one built to be edited by its owner. Links open the live sites.

Andrew Norman Property Group homepage with a photo of mini factories

Andrew Norman Property Group

Industrial property · WordPress

Somerset West Private School homepage with a post-matric programme banner

Somerset West Private School

Education · WordPress

West Coast Private Game Reserve homepage with a photo of the reserve

West Coast Private Game Reserve

Tourism · WordPress

Rooikat Safari Collection homepage with a landscape photo

Rooikat Safari Collection

Hospitality · WordPress

Background

Why a two-day site isn’t a two-day-quality site.

Fourteen years engineering production systems at scale. My day job is frontend architecture at HyveMobile; the two-day builds are the same discipline applied to a smaller problem.

Now
Frontend Developer, HyveMobile · Next.js 16, React 19, TypeScript, a 6,400-test suite, per-operator templates for a single-telco platform.
Before
Obox · Everlytic · GSDH · Zando · Media24 (Huisgenoot, YOU, DRUM, Top Gear)
Stack
React, Next.js, TypeScript, PHP, Laravel, WordPress, AWS

Worked with Mark

In other people’s words.

Recommendations from people I have worked with, taken from LinkedIn and lightly edited for grammar.

I worked with Mark for about five years, and in that time I had the privilege of watching him grow from strength to strength, not only as a professional developer but also as a person with strong character and leadership abilities.

Mark is incredibly capable, hard-working and committed to delivering the utmost. Nothing is too large or too small for him to get involved in, and he will see it through to completion while motivating those around him to do the same.

Mark is loyal, passionate and an all-round fantastic person.

Tyler Reed Managed Mark directly LinkedIn · Feb 2019

Mark is an excellent software developer. He is capable of researching and finding solutions, and he works well in a team. He is able to complete any task successfully despite deadline pressure. I would easily recommend him for any developer position.

Reyaan Boltman Director and founder · worked with Mark on the same team LinkedIn · Feb 2019

Mark proved to be a terrific person to work with: wise, clever and well educated, a Senior PHP Engineer who can be trusted. He is an organised, customer-service-oriented perfectionist who has no problem working hard when necessary. Give him the really challenging tasks, the ones everyone else is struggling with, and he will get them done. Mark always maintains very good relationships with co-workers and clients, and he shines in a hectic environment. Definitely worth recommending.

Darryl Goodrich Senior Engineer at SiteConnect · worked with Mark on the same team LinkedIn · Feb 2019

Start a project

Tell me what the site has to do.

A few lines about the business and what you already have (logo, photos, copy) is enough to start. Whether it is a two-day brochure site, a React web app or an architecture review, I come back within one working day with next steps.

There is no price list on this page, by design. Every project is scoped and quoted individually; general pricing guidance is shared as soon as you get in touch.

I reply within one working day.

Your name and email are used only to reply to you. They are kept in this site's admin and in my mailbox, and shared with nobody.