Steve DuncanSoftware developer, Nova Scotia
– / – live

Tools, agents, and apps that automate and improve workflows.

I build software that real operations run on: an ERP for a custom fabrication shop, CAD and estimating instruments for tablets and browsers, and research into optimization at the edge of what is computable. Nothing here is a mockup. Pick one, watch it run, then open it.

– deployments– reachable right nowScroll, or use the dots on the right
View assembled · rotation 35° · drag to orbit
72.00 36.00 18.0 ft² · $214.60

Cutsheet MK‑1

Material take‑off and cut sheets, for a tablet with a pen

Replaces the yellow legal pad. Sketch a part with a stylus, get a clean dimensioned drawing, a live square‑footage and cost readout, and a printable sheet for the floor. Works offline once loaded.

Built withCanvas, ES modules, offline‑first storage, Cloudflare Worker
Open Cutsheet steveduncan.ai/drawchecking
θ 148.6° · R 168.2 frustum · Ø24 → Ø44 · h 30 · 12 ga

PlateSD

Flat‑pattern development CAD

Unfolding CAD for steel fabrication, sheet metal, ducting and piping, in the spirit of Plate 'n' Sheet with a modern interface. Cones, reducers, rectangle‑to‑round transitions, tees and laterals, lobster‑back bends, gores and auger flights. Every size edit rebuilds the 3D model and the flat pattern instantly, backed by a geometry test suite.

Built withTypeScript, 3D and 2D canvas, Vitest, Cloudflare Worker
Open PlateSD steveduncan.ai/platechecking
W12×26 · A992 · D/C 0.78 · governs LC2 1.2D+1.6L

Steel Calculator

Structural steel concept screening and estimating

Place standard AISC shapes in 3D, drag members into place with snapping, then run LRFD strength checks under ASCE 7 combinations. Members recolour by demand over capacity, a section optimizer finds the lightest passing shape, and a costed report prints to PDF. Includes an 86‑part pressure vessel module with an animated exploded view.

Built withThree.js, AISC 360‑16, ASCE 7‑16, editable cost model
Open the calculator steveduncan.ai/mmw_calcchecking
PORTALTIMEJOBSREQPOMATERIALINVENTORY one Supabase schema · role‑filtered navigation · Microsoft sign‑in

Puffin ERP

Operations platform for a custom fabrication shop

A full enterprise system for a metal fabrication business, built as a suite of SvelteKit applications on one shared Supabase backend. Shift and time tracking, job sheets with costing, requisitions through purchasing and receiving, inventory, and accounting reconciliation, with role‑based visibility and a shared navigation bar that carries pending‑task indicators across apps.

Built withSvelteKit 5, Supabase, Postgres row‑level security, Cloudflare Pages, Microsoft Entra, monorepo
Open the portal Company sign‑in required. Walkthrough on request.checking
INVOICE 0412Detailing · Job 26‑651Rev C · 14 sheetsHours 38.5 SENT

Loofa

Detailing management

Job tracking and invoicing for a drafting and detailing practice: work logged against jobs and revisions, printable invoices, and sign‑in auditing.

Built withSvelteKit, Supabase, Cloudflare Pages
Open Loofa Sign‑in required.checking
Custom fabricators · since 1969

Fabricator website

Public website for a custom metal fabrication company, staging build

Services, capabilities and contact for a fabrication company that has been building since 1969, served from the same edge network as the tools.

Built withStatic HTML, Cloudflare Pages
Open the site steveduncan.ai/mmw_testchecking
TREES 1 284 ± 9%

Canopy NS‑1

Photogrammetric tree tally

Trace a freehand boundary on the map, pick a stand model, and watch an eight‑stage photogrammetric pipeline animate each raster product onto the map. Returns a tree count with a confidence interval and a printed derivation. Tuned for Nova Scotia's Acadian forest.

Built withCanvas pixel analysis, raster pipeline, map tiles
Open Canopy steveduncan.ai/treetoolchecking

Optimere and QAOA

Medical scheduling concept with a live quantum optimization simulator

Rescheduling a clinic when a no‑show ripples through the day is a combinatorial problem that explodes with scale. The simulator treats it as Max‑Cut and runs a Quantum Approximate Optimization Algorithm as a classical state‑vector simulation, in your browser. Press Run optimizer in the panel to watch the circuit converge; try one to three layers.

Built withReact, state‑vector simulation of six qubits, gradient ascent over the circuit angles, Canvas
Open the full page steveduncan.ai/optimerechecking
SEARCH “weld map”3 hits · 2 files split ▸ ocr ▸

DocSD

PDF workbench for Windows

Fast viewing and text search across whole folders, page‑level restructuring (combine, split, crop, stitch, bookmarks, layers), and local OCR that writes a searchable text layer back into the file. All data stays on the machine.

Built withWPF on .NET 9, PDFium, PDFsharp, Windows OCR and Tesseract
Desktop application. Demonstration on request.
WHO'S HERE S. DuncanR. DiazM. ColeJ. Park

FaceLock

Check‑in and check‑out kiosk for a tablet

A registered person walks up to the tablet, is recognised, and is checked in; next time, checked out. Recognition models run in the tablet's browser, and the roster and history live in a SQLite file on a PC on the same Wi‑Fi. No cloud services involved.

Built withNode, in‑browser face models, SQLite, self‑signed TLS for camera access
Runs on a local network. Demonstration on request.
pinch · drag · snap ▸

Gesture Window Control

Hands‑free control of a multi‑monitor desktop

Head direction and iris position pick the monitor you are looking at, a hand becomes the pointer on that monitor, and gestures act on the window underneath: move, snap, minimise, close.

Built withPython, MediaPipe hand and face tracking, Windows API
Desktop application. Demonstration on request.

Small tools, shipped fast, kept running.

Start on the floor

The best specification is watching someone do the job on a legal pad. I build for purchasing clerks, welders, detailers and clinic schedulers, and keep building until the paper disappears.

Agentic engineering

Development runs through an agentic workflow with review‑gated deployments: feature branches, pull requests, staged environments. That is how one person ships an ERP and a shelf of instruments and keeps them all in production.

Zero‑ops at the edge

Everything deploys to Cloudflare Pages and Workers, with Supabase behind the authenticated apps. No servers to patch, latency in the tens of milliseconds, and a full deploy takes under a minute.

StackSvelteKit, React, TypeScript, Node, Python, .NET, Supabase and Postgres, Cloudflare Pages and Workers, Three.js, Canvas 2D, MediaPipe, AISC and ASCE codes, combinatorial optimization

Every deployment, checked live.

DeploymentWhat it doesAddressStatus