This SvelteKit (Svelte 5) site is the public home for my studio work. I keep the repo open for folks curious about how the design and content systems are built. I'm not looking for contributions, but I do appreciate issues for bugs or refactor ideas.
Tempo Immaterial is a personal portfolio/studio for writing, art, experiments, and interactive pieces. The site is mostly prerendered static output, with a few interactive "arcade" pages and UI flourishes layered on top.
- Content lives in a private
teenylilcontentrepo and is fetched at build time intocontent/viascripts/fetch-content.sh. - Build-time fetch selects
VERCEL_GIT_COMMIT_REF(if present), thenCONTENT_REF, thenmain, and removescontent/.gitafter cloning. - Loaders in
src/lib/content/parse markdown/JSON for blog, poems, postcards, studio cards/illustrations, and career publications. - Content-heavy pages are prerendered; there are no runtime CMS/API calls for core sections.
- Notion API code is removed; only historical types/render helpers remain in
src/lib/notion/.
scripts/fetch-content.shandpnpm vercel-build: build-time content fetch and filesystem setup (imperative shell).scripts/upload-images.sh: scan/download/upload ImageKit assets to R2 and emit a URL mapping.scripts/rewrite-image-urls.mjs: manual mapping-driven URL rewrite tool (run after verification).src/lib/content/*: parsing/typing for markdown and JSON content (functional-ish core).src/routes/**/+page.server.ts: orchestration + prerender configuration.src/lib/notion/*: legacy render helpers and types.- Prerendered content sections across blog, poems, postcards, studio, and career.
- A tabbed News page for studio + site updates.
- Career routes like
/career/verceland/career/builderio. - Individual poem routes under
/studio/hfc/[slug]. - Interactive arcade mini-apps for playful experiments.
- Built on Svelte 5 (runes) with strict TypeScript settings.
- Shared prose styling system (no Tailwind).
- Syntax highlighting via
highlight.jsfor blog posts. - Social links are Bluesky-first (no Twitter-specific integration).
This site is always evolving. It's a place to tinker, learn in public, and share what I'm making. Think of this repo as a reference for how the site works, not a reusable product.
docs/product/vision.md: the product vision and experience principles.docs/product/CONTENT_MANAGEMENT.md: the content pipeline and content repo structure.