This site is 96 pages. That is the entirety of the E2 world: every person, every city, every system, documented and live at /e2/pages/.
It all runs from one repo (thestudio-io on GitHub), deployed to Vercel as plain static HTML. No database, no build step for content. An edge middleware routes the e2planet.com root and injects the E2 tagline bar on every page. Generators in e2/*.py render the cities, the people index, the pages index, and the online-now avatars, so nothing is ever hand-edited twice.
The 85 pages break down like this: People (the full cast, each with their own page), Cities (every E2 city, each with its own page), Systems (gym, town square, map, passport, radio, lab, workshop, server room, night market, beach, lake, cabin and more), Docs (how the worlds run, brand, tags, values, timeline), and Blogs (Mike, Sally, Dinesh and the bot blog). The sitemap below lists every one.
e2/
index.html front door (six white boxes)
people/
index.html Our People (from /characters/, E2 chrome)
casting/ casting copy, links in-world
cities/index.html E2 Cities (from /worlds/, musicals removed)
docs/index.html world docs (from /worlds/how-they-run/)
dev/index.html this page
brand/index.html E2 brand page (from /brand/)
tags/index.html E2 tags page (from /tags/, urls rewritten in-world)
passport/
index.html E2 passport (original build, flippable booklet)
e2takes/ E2 image takes (hero, city, judge...)
e2planet/index.html the e2planet.com splash (576 bytes)
middleware.js edge routing (root hosts + tagline bar)
vercel.json rewrites, redirects, llama 308s
Plus: every Studio page is mirrored under /e2/* automatically. /e2/music/, /e2/shortbus/, /e2/radio/, all of them. No copies, no extra files.
E2 is not a second site. It is a lens over the one site. One repo (~/workspace/thestudio-real/), one Vercel project, one deploy. The whole E2 world is expressed in two files:
vercel.json — the rewrite and redirect schememiddleware.js — edge routing the rewrites cannot doNative E2 pages (front door, people, cities, docs, dev) are real files under e2/. Everything else is a rewrite. Nothing is copied twice.
{ "source": "/:path+", "destination": "/:path*" },
{ "source": "/:path+/", "destination": "/:path*/" }
/e2/starvard/ serves /starvard/. /e2/music/ serves /music/. The second rule exists because Vercel's :path+ never matches a trailing slash, so /e2/foo/ needed its own companion rewrite. That bug cost a round of debugging; now it is a standing pattern.
Real files under e2/ take precedence over the rewrites: /e2/, /e2/people/, /e2/cities/, /e2/docs/, /e2/dev. They carry E2 chrome (E2 nav, E2 footer) instead of the mirrored page's chrome.
Per Dave's standing call, Llama is fully excluded from E2. No folder, no mirror. /e2/llama* and /e2/sloth* 308-redirect to llamachat.io. The E2 front door never mentions Llama; the nav Chat link points at thestudio.io/llama as an external hop.
All 256 redirect aliases in vercel.json are mirrored under /e2/ with in-world destinations, so old links keep working inside the world.
Vercel resolves / to /index.html via static-file matching before the rewrites array runs. Host-based rewrites (has: [{type: host}]) can never catch the root path; they work fine for every subpath. This was found the hard way when e2planet.com served the Studio homepage instead of the splash.
Fix: middleware.js at the repo root with matcher: ['/', '/:path*'], running before all routing. Gotcha: plain Response.rewrite() does not exist in the edge runtime (it is Next-only); without the next package, do an internal fetch() subrequest instead. The destination must not match the matcher or it loops; the x-middleware-subrequest / x-e2-bar-done headers guard against that.
Mirrored /e2/* pages get the E2 tagline bar injected before </body>: E2 - Come build a better world with us. The middleware fetches the page through normal routing (so rewrites, redirects, and static files all resolve), then injects. Native E2 pages already carry E2 chrome, so any HTML already containing the tagline is returned untouched. Non-HTML responses pass through untouched.
E2. brand, Vision | About Us (in-page anchors on the front door) | People | Cities | Chat. Never sticky, never fixed. Dave's hard rule: a top nav must never cover text on scroll; it scrolls away with the page.#f4f4f6 zone, six big white content boxes, black text, black footer. Hero: Imagine a kinder world with a video modal button (Starvard pattern: backdrop, close, Escape, autoplay).E2 - Come build a better world with us, then at the very bottom the measured page load time and a link to this dev page.the-studio, --prod from ~/workspace/thestudio-real/. Token at ~/.config/vercel-deploy-token; never print it.Dave Dlaney <DlaneyCreative@gmail.com>). Vercel blocks deploys from unauthorized authors.git add -A in this repo (a past parallel-session accident deleted live/index.html). Stage files by name. git status before every commit; git pull --rebase before every push.GET /v6/deployments, check state === READY), then verify live with curl.