The studio and its site
Embratic is the two-person indie studio I founded in 2023. Blue Olive is its artist, designer and writer, and I am its programmer. Its games are The Shrouded Parchments, Astroblast Rampage and Jigsaw Artistry, with Roots & Runes coming soon on Steam. Until the summer of 2026 it was called Ember Games Studio, and the site took the new name on 2026-08-01.
I built embratic.com, the studio's home on the web. This page is a short tour of it, the ideas it is built on, and what is still on its list.

A tour
The menu has four sections.
- Games is the catalogue: five entries, the three games already out and two in the making, an untitled project and a concept, each with a card and a page of its own. Roots & Runes is not in it yet.
- Assets shows Blue Olive's seven packs on the Unity Asset Store, each with its own page and a button to the store.
- Studio says who the studio is, who the two of us are, and how to reach us.
- News is not open yet, and the page says so.




The Forge in the Dark
The design has a name in the repository's README: "The Forge in the Dark". Warm, near-black pages lit by amber embers, sparks drifting up the screen, a film grain over everything, and small animations as a page loads and as you scroll. Four typefaces share the work: Bricolage Grotesque for headings, Hanken Grotesk for text, JetBrains Mono for labels, and Fraunces, an old-style serif with expressive italics.
The sparks are 26 small HTML elements moved by CSS, with no canvas and no game engine on the page. The README gives the reason: the text stays real HTML, so search engines read it and the pages stay fast. When a visitor's system asks for reduced motion, the sparks are hidden and the CSS animations, such as the flame on the logo, stop. The fades on load and on scroll come from the Motion library, and they still play.
Nothing looks broken while art is missing. A game or a pack with no cover gets a generated ember gradient instead, and a page whose screenshots are not ready shows "In the forge" placeholders.
Content as data
The catalogue is data, not pages. A game is one block in data/games.ts, an asset pack one block in data/assets.ts, and their pictures and videos are matched to them by slug from small config files. Adding a game is copying a block and filling it in; its card in the catalogue and its own page follow. Those files hold five game entries and seven packs today.
Hosting, and a plan B on the shelf
The domain sits with one company and the site with another. embratic.com was registered on 2026-07-31, with Cloudflare as the registrar and on Cloudflare's name servers, and the site is served from Vercel. A note in the repository from 2026-06-02, before the rename, recommends that split: buy the domain where it is sold at cost, and host where builds and deploys already worked. The Cloudflare build, through OpenNext, gave trouble on Windows.
The repository also holds a plan B, written and documented but not switched on: a small Cloudflare Worker that would serve the site from Cloudflare and fall back to Vercel whenever Cloudflare throws or answers with a server error. It comes with a rollback, and it names what it does not cover, a Cloudflare-wide outage. Its routes are commented out in the committed config, so the live site does not pass through it. A status note from 2026-06-09 says why it waits. The Cloudflare deployment it would put first was blocked on one real fix, a storage bucket for the cache the prerendered pages need, and for a small site that will not reach either free tier's limits the whole effort is likely premature. Staying on Vercel was the alternative the note named, and the site is still there.
Checks any agent can run
The repository carries seven verification skills, for any agent on my machine to run: an image check, a content lint, a link check, a smoke test of every route, a build gate, an SEO audit and a matrix of screenshots. Each has a SKILL.md and one or two Node scripts, and the script decides: exit code 0 is a pass, anything else is a finding, printed line by line. One runner, run.mjs, runs a single skill, a fast offline sweep or all of them. With --serve, it starts the dev server for the checks that need one and stops it again at the end; without it, those checks are skipped, not failed.
The planning note that came before them sets the rule. The result must be the same whichever local agent runs the check, Claude or Qwen, so the judgment sits in the script and not in the model: a weak model can misread a page, but not an exit code. The history shows a run with Claude Haiku and changes made for Qwen.
The first full sweep, on 2026-06-08, found bugs in the checks themselves. The link check's was the worst: it looked for the code one folder too high, found no links at all and exited 0, a pass. The smoke test went the other way and failed every route, on a "page not found" marker that the dev server puts in every page. Both are fixed, and the status file lists each fix.
What is still on the list
- News. A written plan turns News from three channels into one feed, newest first, about ten posts to a page, each post on its own page, keeping the thread and dots the channel pages already have. It is not built yet.
- Cloudflare first. The plan B above, waiting on its cache fix and on a reason to need it.
- Two TODO notes. The content lint exits 1 on purpose while two TODO notes remain in the data files, so a full sweep reports them until they go.
My part
- Commits. The repository has 127 commits, from 2026-06-01 to 2026-08-05, and 111 of them came in the first ten days. 11 are Blue Olive's, all from 2026-06-07 in her local time: she renamed About to Studio, moved the contact section and the menu items, and added the featured assets section and a button to the assets on the home page. Her commits touch the theme and the data files too. The other 116 are in my two accounts: the pages, most of the theme and the data, the skills and the router. Two of them are pull-request merges, and one is a squash that carries a change of hers.
- Claude. 15 commits carry a Claude co-author trailer, 4 of mine and all 11 of Blue Olive's. Two squash commits of mine quote the trailer of a commit inside them.
- Not claimed. The pictures. The covers and screenshots are the games' own art, and the asset packs are Blue Olive's.