Calvin Durrant Web Engineer · South Africa

I build the wheel, the scratch card and the report behind them.

Web engineer with a diploma in visual communication and twelve years of shipping web apps. At Developer Hut I work on GameSights, the engine behind branded promotional games, and on the portal where clients read the results.

Try the pieces
  • Shipping since 2014
  • 8 roles
  • Svelte, React, Angular, Vue
Wheel 12 tools · 0 spins

Twelve tools from the CV

Spin it. Wherever it stops, it tells you where I used that one.

First entries Sample data
5 331 +10.4%

Last 14 days vs the 14 before

Scratch & reveal No. 0013

Designed first, then built.

Diploma in Visual Communication, 2013

Scratch with a finger or the mouse

Fig. 01 Working pieces from the job. Numbers in them are sample data.

01 / 05 Work

What I’ve been building.

Most of this is from Developer Hut, where I’ve worked since February 2025. The last card is from hearX before that. Each one has a small working sketch of it, and any numbers in them are sample data.

Total
6 073
Per day
434
Change
+9.5%
Per day · First entries Sample data

Fig. 02 Developer Hut

GameSights (Kinesis)

Multi-tenant engine for branded promotional games, and its client portal

  • Built the client portal’s reporting suite: first entries, monthly rollups and serials, redemptions and draw winners, with filter bars, column selection, per-day series, previous-period comparison and KPI rows.
  • Added platform admin roles, tenant-scoped user management and invite-link onboarding. Fixed a security issue where integration API keys could read other tenants’ reports.
  • Set up Sentry and alerts for failed scheduled jobs and payouts. Release the Kinesis SDK to GitHub Packages and promote staging to production.
  • SvelteKit
  • Multi-tenant
  • Sentry
  • GitHub Packages
studio · new campaign claude
  1. Read the brief and the design files
  2. Look up the brand on Brandfetch
  3. Pick a model: Claude or OpenRouter
  4. Build the wheel game
  5. Apply the Figma handover
  6. Screen tour: check every screen 6/6
  7. Commit to the campaign’s private repo
commit · restore · stash · undo Illustration

Fig. 03 Developer Hut Lead

GameSights Studio

An AI agent that builds campaigns from a brief and design files

  • Built the agent’s skills for wheel, scratch card and gameboard games, Figma handover, Brandfetch lookups, Claude and OpenRouter model selection, and a screen tour where the agent checks every screen before it finishes.
  • Gave each campaign its own private repo through a GitHub App, with commit, restore, stash and undo in the studio. Moved the studio from an Electron app to a containerised Node server deployed from CI.
  • Claude
  • OpenRouter
  • GitHub App
  • Node
Monthly gameboard 0/3 picks
Illustration

Fig. 04 Developer Hut

1-To-Win

Campaign apps for brands

  • 1-To-Win for Flash, running in a mobile WebView: weekly prize drops, a monthly jackpot gameboard with 3D card reveals, coin-based qualification, a leaderboard, serial entry and generated share images.
  • Windhoek 330 Reasons: age gate, registration, plays against the Kinesis engine and prize codes sent by SMS.
  • Mobile WebView
  • SMS
@developer-hut/sui
Redemptions 1 284 +6.1%
Game types
1 – 14 Oct
Overlays open in the top layer Sample data

Filters

This panel opens in the browser’s top layer, so no card edge or overflow can clip it. The library’s overlays work the same way.

Fig. 05 Developer Hut

@developer-hut/sui

The company’s shared Svelte component library

  • Build and release the library: KPI cards, filter bars, multi-selects, date pickers, sortable tables, a file explorer and a CodeMirror editor.
  • Moved overlays to the browser top layer and migrated the GameSights portal onto it, with dark and light themes.
  • Svelte
  • CodeMirror
90
Capital
R 141 760
Fees owed
R 1 063
Settlement
R 142 823
DayEntryTo feesTo capital
0Advance paid outR 400 000
30Receipt R 150 000R 6 000R 144 000
75Receipt R 120 000R 5 760R 114 240
0.05% a day on outstanding capital Sample figures

Fig. 06 Developer Hut Lead

FT Finance

Deal management for property finance advances

  • Built the financial core: settlement calculations, daily fee accrual on outstanding capital, receipt allocation across payouts, sub-deals and net proceeds.
  • Added dashboards, generated PDFs (applications, undertakings, schedules) and client-specific CSV exports.
  • Settlements
  • PDF
  • CSV
Linear TCK-142 Add a redemptions report
Split into 3 PRs
  1. #3 Portal page and filters AI review
  2. #2 Report query and API AI review
  3. #1 Schema and migration AI review
  4. main
Ticket to stacked PRs Illustration

Fig. 07 Developer Hut

dh-skills

The team’s Claude Code plugin, from Linear tickets to stacked pull requests

  • dh-skills, the team’s Claude Code plugin that takes work from Linear tickets to stacked pull requests, and an AI PR reviewer hardened against hallucinated findings.
  • Claude Code
  • Linear
  • Stacked PRs
Hearing screener iframe

Play a short clip, then say what you heard.

Quiet tones · plays only when you press Illustration, not a hearing test

Fig. 08 hearX

Hearing screener

Widgets that clients embed in iframes, plus the company site and a clinical data platform

  • Built hearing screener widgets that clients embed in iframes: they play audio clips and score what the user heard. Wrote the shared packages behind them in a Turborepo monorepo and kept the older Vue widgets running.
  • Combined the old Jekyll site and its replacement into one build so pages could move across one at a time, then reviewed PRs and guided architecture on the Next.js and Strapi rewrite.
  • Maintained a legacy Angular 8 platform for screening and clinical hearing data and started its rewrite in Next.js. Some work on the Go back end.
  • React
  • Turborepo
  • Next.js
  • Vue

Prototypes

  • PickPro A white-label pick’em demo on live Opta football data.
  • Savanna AR A WebAR scene anchored to a QR code with three.js.

02 / 05 Career

Twelve years, drawn to scale.

Every role on one axis, from January 2014 to this month. Each bar runs from the month I started to the month I left.

Roles
8
Years
12
Longest
hearX3 yrs
  1. Developer Hut

    Web Engineer

    Feb 2025 – now1 yr 8 moRemote

    A promotional games platform and its portal, an AI campaign builder, a property finance system and the company’s component library.

    SvelteKit · Svelte 5 · TypeScript · Drizzle · PostgreSQL · Firebase · Tailwind · TanStack Table · Docker · Coolify · GitHub Actions · Sentry · Vitest

    See the work
  2. hearX

    Front-End Developer

    Feb 2022 – Feb 20253 yrs

    Hearing screener widgets, the company website and a clinical hearing data platform.

    React · Redux Toolkit · Next.js · Astro · Vue · MUI · Storybook · Jest · Testing Library · React Hook Form · Zod · Twilio Video · Google Maps API · GA4

    See the work
  3. IOT.next

    Intermediate Software Engineer

    Sep 2020 – May 20218 mo

    Angular apps and a shared library used across them. NgRx, RxJS, Angular Material CDK, Azure pipelines.

  4. Standard Bank

    Angular Developer

    Sep 2019 – Sep 20201 yr

    Angular apps and shared libraries with NgRx and RxJS, deployed through GitLab CI.

  5. Nedbank

    Programmer

    Mar 2018 – Feb 201911 mo

    UX and UI concepts in Angular 6 for the next nedbank.co.za. NgRx, Firebase deployments.

  6. Code et al

    Programmer

    Nov 2016 – Dec 20171 yr 1 mo

    Node and Express back ends, React and Angular 4 front ends, MySQL.

  7. BigBrave Digital

    Developer

    Feb 2016 – Oct 20168 mo

    Node and Express back ends, AngularJS and Bootstrap front ends, MongoDB.

  8. CherryOlive

    DevOps Engineer

    Feb 2014 – Jul 20151 yr 5 mo

    AngularJS front ends, Node back ends, and brand identities with animated SVG icons.

03 / 05 Stack

What I build with.

The outlined tools are on the Developer Hut stack, so I use them every day. The rest are on my CV from earlier roles and study. Pick one to see where it shows up.

Daily, on the Developer Hut stack

01

Front end

11 · 4 daily

Pick a tool to see where I used it.

02

State

6 · 1 daily

Pick a tool to see where I used it.

03

Back end

9 · 3 daily

Pick a tool to see where I used it.

04

Delivery

9 · 5 daily

Pick a tool to see where I used it.

05

AI tooling

3

Pick a tool to see where I used it.

06

Design

4

Pick a tool to see where I used it.

04 / 05 Background

Designer first.

I trained in visual communication before I wrote code for a living, and I still use the design tools. Scroll through the four steps and the artboard follows.

Artboard 01 Graph paper
xyy = sin xMaths · IT · Physical SciencesCMYKPen tool · 4 anchors<path class="wedge" d="M16 16 16 7a9 9 0 0 1 9 9Z"/>.wedge { animation: spin 2s infinite }lightdarkSame component, two themes. Tokens set the colour.--accent--ink--panel
  1. 2008 · Willowridge High School

    Matric

    Mathematics, Information Technology, Physical Sciences, Economics.

  2. 2013 · Open Window Institute

    Diploma in Visual Communication

    Interactive media design, 2D and 3D visualisation, commercial design, audio visual studies.

  3. 2014 · CherryOlive

    First role, design and code together

    AngularJS front ends, Node back ends, and brand identities with animated SVG icons.

  4. Now · Developer Hut

    The design tools never left

    Figma, Illustrator, Photoshop and SVG animation. Figma handover is one of the GameSights Studio agent’s skills, and I moved the GameSights portal onto the component library I build, with dark and light themes.

05 / 05 Contact

Email is the quickest way to reach me.

I’m a web engineer in South Africa, working remotely. Send a role, a brief or a question and I’ll get back to you.

Email
calvindurrant@gmail.com Write
Phone
+27 66 250 4106 Call

Calvin Durrant · Web Engineer