Judah Sullivan
Work

FIG. 02 · Project · 2025 – 26

Zenith

The framework behind this portfolio. I designed Zenith so the build can check how pages fit together and the browser can spend its time rendering the page and handling interaction.

Zenith framework homepage
Fig. 2   Zenith framework homepage
01

The problem

A site like this needs readable URLs, consistent layouts and interactions that survive navigation. I wanted those pieces to have explicit contracts instead of discovering how they fit together in a browser after shipping.

02

My role

I authored the language surface and worked across the compiler, router, runtime, CLI and docs. The portfolio is where those parts have to work together: content enters at build time, pages compile, and motion binds to the page that visitors actually see.

03

The key decision

Compile each route ahead of time and keep interaction in a small runtime. The content export supplies structured copy and media; Zenith owns the page structure. That boundary also made it possible to change CMSs while keeping the portfolio routes and motion.

04

The result

You can inspect the result directly: this site serves built HTML at its existing URLs. Try the theme switch, then open a case study. The theme persists while navigation reveals the next page.

src/components/ui/ThemeToggle.zen

function handleToggleClick() {
  commitTheme(nextThemeValue(currentTheme));
}

zenMount(() => {
  applyTheme(resolveInitialTheme());
});

Visual evidence

From source to site.

The portfolio is a useful test because it has to work as a site first. Here’s one view of the browser and the built route that serves it.

The live portfolio preview in Night theme, showing the home introduction and framed portrait.

01 / Demo capture

The portfolio in the browser

The home page is a real consumer of the framework: a route, a theme preference and interaction that binds after the page renders.

View full size Try the homepage