A chronological visualization of the family of MVC patterns.
The site is a static Vite app in web/. Encyclopedia content and SVG layout math stay in app/ and are imported as the source of truth:
app/jsons— JSON:API fixtures (patterns, technologies, headers, columns)app/templates/dpatternsandapp/templates/technologies— article copyapp/lib/svg-layout— path-factory and grid geometry (do not rewrite the path algorithm)
An Ember 7.1 shell lives in ember/. It is a development/historical companion, not what you deploy.
git clone <repository-url>
cd mvc-tree/web
npm install
npm run dev
Visit http://localhost:5173.
Production-mode preview (what CI tests and Netlify serve):
npm run build
npm run preview
Visit http://localhost:4173.
From web/:
npm test— Vitest path snapshots + Playwright viz CInpm run test:unit— pathdsnapshots and Handlebars portnpm run test:e2e— Playwright (builds and servesweb/dist)
cd mvc-tree/ember
npm install
npm start
Visit http://localhost:4200.
npm test # vite build --mode development && ember test --path dist
Both shells import the same app/jsons and app/lib/svg-layout. Do not make web/ a subpackage of the Ember app.
The live site is https://mvc.givan.se on Netlify (site mvc). CI does not deploy. Merging to master does not publish. Squash-merge with [skip netlify] in the merge commit message.
Deploy Previews are already off (skip_prs=true; toml ignore is belt-and-suspenders). Do not set stop_builds. Auto git publishing stays on; ignore skips those production builds.
Intentional ship (CLI only): from web/ after npm run build, netlify deploy --prod --dir=dist (netlify login once, netlify link --name mvc). Alternative: a build hook (ignore does not cancel hooks). Commands: DEV_SETUP.md.
netlify.toml is the source of truth for remote builds: Base directory web, command npm ci && npm run build (or npm run build if install is separate), publish dist (i.e. web/dist), NODE_VERSION 24.
GitHub Actions still runs tests and may upload a site artifact; it does not publish.
See DEV_SETUP.md for the Node versions, both apps, and CI details.