Repo: https://github.com/ParthPatel00/WhatTheDiff
Drag-drop two 3D model files and instantly see what changed — visually and structurally. No 3D software needed. Built for game and design teams.
Native macOS desktop app. Supports .glb files. Runs entirely on-device — no server, no auth, no uploads.
Built at SJHacks 2026.
This repo has three reference documents. Read them in this order before writing code:
SPEC.md— single source of truth for what to build. Tech stack, architecture, MVP feature specs with inline code patterns, and a critical gotchas section (15 items) documenting silent-failure traps. Every implementation decision that deviates from the obvious default is justified inline.PHASES.md— how the work is divided into independent phases. Each phase lists deliverables, dependencies, and a "done when" checklist.DEMO.md— 2-3 minute demo script. Only relevant at the end of the build.
If you are an AI agent implementing a phase: read SPEC.md in full first, then read only the phase you are assigned in PHASES.md. Do not skim the gotchas section.
If you are a human picking up work: read PHASES.md first to see what's free, then consult SPEC.md for technical detail.
Next.js 14 App Router, TypeScript, Tailwind, Three.js, gltf-transform, Zustand. See SPEC.md § Tech stack for version pins and rationale.
The app lives under frontend/. All commands must be run from there.
cd frontend
npm install
npm run devOpen http://localhost:3000 and drop two .glb files.
Build the Next.js app first, then run Electron against it:
cd frontend
npm run build
cd ../electron
npx electron .To package a distributable macOS app:
cd electron
npm run build:macAfter a git commit that touches .glb files, the hook automatically opens both versions in the local diff viewer.
Install the hook in any repo containing .glb files:
cd cli
npm install
node bin/whathediff.js install-hookCompare two files directly (no git required):
node bin/whathediff.js --a old.glb --b new.glbRemove the hook:
node bin/whathediff.js uninstall-hookSet WHATHEDIFF_VIEWER_URL in .env to override the default viewer URL (http://localhost:3000).
Use KhronosGroup/glTF-Sample-Assets. DamagedHelmet is the canonical test model. See SPEC.md § Test models for required test cases.