Coding Projects
Small, self-contained things I built to show what I can do. Each one lives in its own folder in the site repo.
-
Construction Accounting in-progress
A full accounting system for a construction contractor, built on Postgres: general ledger, AP, AR, payroll with burden, job cost, bank rec, equipment and fixed assets, inventory and insurance, with two demo companies and a year of books. Still pre-release, so it's behind sign-in and only open to people I've given access; the design notes and schema are in the repo.
-
Shop Floor in-progress
A live dashboard over a simulated sheet-metal duct shop that runs around the clock: 13 machines, three shifts, jobs flowing from coil line to shipping. The simulator writes into the same tables the SQL Playground queries.
-
Signed Invoice in-progress
A proof-of-delivery invoice for a shipment from the live shop data, signed by the customer on their own phone (private link, emailed code) or on a device handed to them. Drawn signature with timing (replayable), short/damaged exceptions or a refusal, optional photo and GPS, and a full audit trail, sealed with a SHA-256 fingerprint anyone can check. Hand-written PDF and QR encoder, email through Resend, texts through Twilio, and a behind-the-scenes view of exactly how it's stored.
-
Weather Tracker in-progress
Saves the 7-day forecast from several forecasters every morning, then shows how the forecast for any one day changed over the week before it, and who called it best.
-
Key Jam live
A typing trainer where the only one you race is yourself. It counts every key you press, finds the keys you miss (and what you hit instead) and the key pairs that slow you down, then drills them until they're fixed. Timed Tests against a Ghost of your best pace, Practice drills, Picture Prompt (describe one of 100 drawn scenes; only spelling counts) and Key Drop, an arcade game of falling keys. Pick which keys to work on: letters, numbers, writing symbols, code symbols. Keyboard heatmap, Personal Bests for today, this week and ever, Milestones. No leaderboards.
-
Graze & Erase live
A no-frills sketch pad: a pen, an eraser, six colours and a Letter page on blank, dotted or grid paper. Works with a mouse, a finger or a stylus (pinch to zoom). Download any sketch as a PDF or PNG. Signed in, boards autosave, keep their last 4 versions (one each time you leave a board) and can be shared read-only. The PNG reader/writer and the PDF are written by hand, no packages.
-
Minesweeper live
Classic Windows Minesweeper, with wolves for mines, a shepherd's crook for the flag and a lamb on the face button. Beginner, Intermediate, Expert and custom boards, a no-guess mode checked by a solver, and a Daily board that's the same for everyone. The board lives on the server and each click asks it what's there, so nobody can read the wolves out of the page. Every move is saved: pick a game back up on any device. Leaderboards (with and without hints), stats, badges, heatmaps, and WolfSweeper, a bot that plays on the lobby page.
-
JezzBall with sheep: build fences that grow both ways, pen the flock, clear 75% of the field. Rams charge, ewes split, black sheep chew fences, ghost lambs walk through them, and a wolf comes for your fences if you dawdle. A deterministic engine shared by browser and server: every run is just a seed and the clicks, re-played on the server to verify the score, so replays are tiny. Daily seeded run, badges, a Firsts hall of fame.
-
Tic-tac-toe with no turns: claim any square any time, wait out a short cooldown, and watch every piece fade 6 seconds after it lands. Live two-player rooms over Server-Sent Events, a bot with three reaction speeds, millisecond replays, and a square-by-square heatmap from every game in Postgres.
-
Report Builder live
Saved SQL reports with question boxes declared in the SQL ({{From|{last_week_start}|date}}), column directives in the aliases ("Total|$|sum"), subtotals, sorting, copy-as-table, a dependency-free .xlsx export, save history with diffs, and key access for scripts. A port of the report engine I built for work, onto the SQL Playground's data.
-
SQL Playground live
Run real SQL against a fictional sheet-metal shop: 1,200 jobs, 11k parts, 62k time-log rows. Public and read-only, sandboxed by a locked-down Postgres role. Guided tour of joins, window functions, CTEs, pivots and EXPLAIN.
-
A calculator that saves every result to Postgres. Tag and annotate results, filter by tag, and copy any number with one click. Shared expression parser runs on both the browser and the server.
-
The smallest possible project: an Express route that counts its own visits in Postgres. Copy this folder to start a new project.