My own tool · Website control room

AWL

AWL is the private control room for jardinestudio.com. It manages every page, service, FAQ, redirect, price tier and journal article on the site, and commits each change to Git, so a custom-coded website is as easy to run as a CMS without becoming one.

OwnershipMy own tool, for the studio website
StatusWorking tool · local only
My roleProduct design and engineering
Built withNext.js, TypeScript, Zod, Git

The short version

What it is

A Next.js app that runs only on my machine and edits the Jardine Studio repository directly: 11 structured content files, MDX journal articles and their images.

What I built

Schema-synced editors for pages, services, FAQs, SEO, redirects, calculator pricing, the ticker and site architecture, plus atomic writes with read-back, path-scoped commits, a media inventory and maintenance tools.

Why it stands out

It gives a hand-built site the editing comfort of a CMS with no second content model, no hosted attack surface and no risk of overwriting work in progress.

By the numbers
11Content files managedPlus MDX journal articles and their media
56Automated tests14 test files: Git safety, writes, media, schemas
28KLines of TypeScriptNext.js app and editing libraries
0Public endpointsBinds to 127.0.0.1 only

Counted from the repository on 4 October 2026.

01 · Scope

One editor for
the whole site.

Not just blog posts. AWL edits the content, search settings and even the pricing behind the public calculator, all against the same schemas the website validates.

01 · Content

Pages and copy

  • Page sections and calls to action
  • Service pages
  • FAQs and ticker
  • Work entries
  • MDX journal articles
02 · Search

Discoverability

  • SEO titles with length targets
  • Redirects
  • Site architecture map and gaps
  • Tag metadata
03 · Business

Live tools

  • Calculator configuration
  • Pricing tiers
  • Widget settings
04 · Upkeep

Maintenance

  • Image usage and alt text
  • Reviewed year updates
  • Schema sync checks
  • One commit per change
02 · In use

Make the edit small.
Make the result inspectable.

Change one word in a page title, save, and get back a commit you can review. Then watch the editor refuse a save that would overwrite somebody’s draft.

Step 1 · Edit a field

AWL page manager for the sample Home page: a success notice reading Saved. Commit cef576f created in the website repo, label and path fields, and the hero title field with a character counter.
  1. Saved, with a hash. Commit cef576f created in the website repo.
  2. Fields that match the page. The hero title, with a 45 to 75 character target.
  3. Shaped around this site. Pages, service pages, journal, media and maintenance.

Sample workspace, captured 9 September 2026. The edit and commit are real.

Step 2 · Review the change

commit cef576fcontent/pages.json+1 −1
  Home page · hero title
- Thoughtful websites for places, people and ideas.
+ Considered websites for places, people and ideas.
Typeset from the original Git diff of the sample save, 9 September 2026. One title edit, one content file, nothing else in the commit.

Step 3 · Refuse a risky save

AWL refusing a save with the message: Awl will not overwrite uncommitted work in the website repo. Commit, stash, or discard changes for content/pages.json.
  1. Work in progress is protected. content/pages.json already held an uncommitted draft, so the write was refused.
  2. Nothing changed on disk. The draft’s bytes and the repository commit stayed exactly as they were.

A real refused save in the sample repository.

03 · Under the hood

An editor that
follows the website.

AWL uses the website’s own page-content schema, with a synchronisation check before every save. If the site’s schema changes after AWL copied it, the editor refuses to write until they agree again.

Text saves go to a temporary file beside the destination, are renamed into place and read back. Transient Windows and OneDrive locks get bounded retries; a mismatch is reported as an error. The commit includes only the intended content path, so unrelated staged and unstaged work stays out of it.

Implemented save path

  1. Edit structured contentFields follow the website’s schema
  2. Check before writingSchema sync, target file state, input validation
  3. Write and verify textTemporary file, rename, read back
  4. Commit the intended pathReturn a hash; leave other work alone

Deliberately outside

  • PublishingPushing and deployment stay a separate, manual step. A save is not a publish button.

Simplified from the implementation.

04 · Maintenance

Know where every
image is used.

A media folder does not tell you what a file supports. AWL scans images and the references to them in content and components, then connects each asset to its usage and alternative text.

Alt text is edited at the reference where it belongs. Before changing it, AWL re-reads the source and checks the old value still matches; if another edit intervened, it asks for a rescan. Dynamic values stay in code.

AWL media reference panel: one reference in content/journal/planning-a-website.mdx line 16, a Markdown image with existing alt text, and Save and Reset buttons.
  1. Exactly where it is used. planning-a-website.mdx, line 16.
  2. Edit at the reference. Alt text changes in the source that uses the image.
  3. Status at a glance. References with and without alt text are marked.

A real alt-text edit in the sample workspace. The saved commit changed that single journal file.

Site view

See the whole
site at once.

An architecture view maps page relationships and flags content gaps, so editing decisions can be made with the structure in view.

It is tailored to this site’s own files, schemas and content mapping, which is exactly what lets the interface reflect how the site actually works.

AWL architecture view mapping the sample site’s pages and flagging content gaps.

Sample capture, 9 September 2026.

05 · Where it stands

Editorial control,
source ownership intact.

Shipped
  • Page, service, journal, SEO and widget editors
  • Schema synchronisation checks
  • Atomic, read-back text writes
  • Path-scoped local commits
  • Media usage inventory and alt-text editing
  • Reviewed year maintenance for journal content
By design

Runs privately on the owner’s machine and works directly in the website repository, so publishing stays a deliberate, reviewed step.

Proof shown

Real edits, real commits and a real refused save, demonstrated on a sample workspace.

Need content editing for a custom-built website? Start a conversation

All projects ↗
Contact

Available for select projects and opportunities

Have a website that needs to win work?

alex@jardinestudio.com

Let’s work together. Have a project in mind or a role you’re hiring for? I’d like to hear about it.

Open email app
Toronto, Canada · --:--Working remotelyLinkedIn (opens in a new tab)