Skip to content
01eternaldev.devstudio site

A Studio Site That Search Engines Can Read in Full

the brief

It's our own site, so the brief was ours. It had to explain our work to non-technical readers and take project requests. Search engines also had to read every page in full. That takes extra care with React, the tool we built the site with. React normally puts each page together inside the visitor's browser, and some search engines don't wait for that.

what we built

Our website automation did the first drafts and the repetitive work on this site. We made every decision and checked every page before launch. Every time we update the site, each page is saved as its own finished HTML file, with its title, search description, and link preview filled in. Even a search engine that doesn't run the site's code still reads the whole page.

Adding a blog post takes one text file. The sitemap, RSS feed, blog index, and llms.txt summary for AI tools are all regenerated from the posts when we publish, and nobody edits them by hand.

react 19typescriptvitetailwindframer motionleniswebgl2cloudflare pagesgithub actions
eternaldev.dev (opens in a new tab)design + build + run · 2026
eternaldev.dev
The EternalDev homepage at desktop width: square code plates, graphite on the left loop and crimson on the right, lifted off a dark grid into an infinity sign above the headline, Software & Systems Built to Last, a one-line summary of the studio, and its two calls to action.
01home · desktop
eternaldev.dev
The EternalDev homepage at phone width: an infinity sign of small code plates, graphite on one loop and crimson on the other, over the dark grid, above the headline in three lines, a short summary of the studio, and its two calls to action.
02home · phone
eternaldev.dev/services
The EternalDev services page: the AI automation section on a cream paper band, its large black headline above a short lede, three mono tags, and numbered capability rows divided by hairline rules.
03services page
eternaldev.dev/work
The EternalDev work page's apps section: the headline What We're Making and a line on how both apps were built, above a sideways-gliding row of large dark app tiles on a cream band, LiftiQ's on a green wash and Social OS's on a crimson one, each with its name stretched across it as a watermark.
04work page

build notes

Build notes for EternalDev

01Every page saved as HTMLA Vite plugin writes each page's HTML file during the build. The step that takes a snapshot of each finished page runs with animations switched off, so every snapshot shows the page at rest.
02No page goes live without metadataThe same plugin checks every page the router knows about and stops the build if one has no title or description. That mistake gets caught before anything is published.
03Markdown publishing pipelineThe blog index loads each post's title and summary without downloading the posts themselves, and a post's text loads only when someone opens it. One parser serves both the browser and the build, so the two can't disagree.
04Fonts hosted on our own domainBoth typefaces are trimmed to Latin characters and ship with the site. The site's security settings block fonts from any other domain, which ruled out Google Fonts from the start.
05One set of motion rulesEvery scroll entrance shares a single curve, rise distance, and trigger point. With list delays capped, a 40-row list settles as fast as a six-row one. Before we merged these rules, there were five different rise distances and eight ways of timing a list.
06WebGL kept off the other pagesThe homepage hero is drawn directly in WebGL2, with no 3D library. It loads as a separate file that pages without the hero never download.

100%

pages prerendered

0

hand-edited sitemaps

1

curve for scroll entrances

Want a Site Made the Same Way?

Tillman designed and built eternaldev.dev. If we make your site, he'll be your contact from the first call through launch and support. We reply to every message within one business day.