DETAIL 2 / A-101 — JOBSITEPROJECT 2 OF 7
Build It: GC Tycoon
iPHONE + iPAD GAME · PERSONAL PROJECT
A phone game where you run a general contracting company. Jobs can lose money.
- DETAIL
- 2 / A-101
- SHEET
- A-101 · JOBSITE
- STATUS
- INTERNAL TESTFLIGHT BETA
- ZONE / LAYER
- JOBSITE · SOFTWARE
- BUILT WITH
- JavaScript, Three.js, Capacitor
A clean pull plan: every trade starts after the one it waits on.
- SEQ 1 Foundations
- SEQ 2 Structural steel
- SEQ 3 Dry-in
- SEQ 4 MEP rough-in
- SEQ 5 Drywall
REVISED 14 SEP 2026. Internal TestFlight builds 1–3 processed. Clouded on the site plan as the newest change in the set.
PROBLEM
I wanted a readable construction-management game built on the tradeoffs a general contractor actually juggles: budget, schedule, safety, quality, owner satisfaction, bonding, buyout, closeout and growth.
BUILD
You bid and buy out jobs, handle RFIs, late steel and failed inspections, bill the owner and close out. Four field mini-games (safety walk, pull plan, punch walk, site logistics) feed the simulation. It’s framework-free JavaScript over a seeded, deterministic simulation (about 15,000 lines across modules, tests and scripts), with Three.js jobsites and a Canvas 2D fallback. Capacitor wraps the offline PWA for iOS, with no ads, analytics or login.
STATUS
Internal TestFlight beta: version 1.0, builds 1–3 processed. Not on the App Store yet. Updated September 14, 2026.
STACK
- Vanilla JavaScript (ES modules)
- Three.js
- Canvas 2D
- Vite
- vite-plugin-pwa
- Capacitor 8 (iOS)
- Swift
- Node test scripts
KEYNOTES · BUILD NOTES
- A seeded RNG makes every run reproducible, so regression tests and challenge-contract codes share seeds.
- Pull Plan scores trade predecessors and delivery gates. Site Logistics scores crane reach and pedestrian routes.
- One shared WebGL context, a 30 fps cap and a 1.6 pixel-ratio cap. The PWA precache went from about 7.4 to 1.6 MiB.
- Balance tuned with bot players: 80 seeded runs across 4 bid strategies and 2 play policies.
MICHAEL MORALE · DETAIL 2 — BUILD IT
DETAIL
2 / A-101
SHEET
A-101