My own project Website: barbagallodigital.com
A site that won't let me overpromise.
The site you're reading. Before a release, the tests read every page and fail on wording I've ruled out, and the current release was checked file by file.
-
320 px -
390 px -
768 px -
1440 px
At a glance
- Built with
- Astro as a static site, plain CSS, two self-hosted typefaces, no tracking cookies
- Tested with
- 154 unit tests and 793 browser tests, run before the RC5 release
- Checked at
- Four screen widths, from 320 pixels to desktop, with axe accessibility checks
- Released
- From a tagged commit, every file verified on the server, the previous site kept for rollback
How it was built
The tests check what the pages say
Marketing copy drifts. A sentence written in a hurry claims a faster reply, or a service that isn’t ready. Here, before a release, the tests read the text of every page and fail if they find wording I’ve ruled out:
- a service that isn’t available yet, unless it’s labelled “not available” beside it;
- a backup, monitoring or turnaround commitment stronger than the ones I’ve made;
- a years-of-experience figure, or a description of my background I’ve retired;
- any email address other than the one I publish.
Tested the way visitors use it
- Every page at 320, 390, 768 and 1440 pixels wide, including with text enlarged to 200%, with no sideways scrolling.
- Automated accessibility checks against WCAG 2.2 AA on every page at every width.
- Both forms tested with and without JavaScript, against the security policy written for the server.
- The phone menu tested in the Safari engine as well as Chrome.
One release, in numbers
From the release record of RC5, deployed on 12 November 2026:
- 69 of 69 files matched their checksums on the server, before the switch and after it.
- 67 of 67 public files passed through the content network that serves the site, with every non-HTML file matching its checksum.
- 26 of 26 live browser checks passed after the switch, at desktop and phone sizes.
- One real message through each form, accepted by the form service.
No years-of-experience figures. Ever.
That’s a rule I set for this site, because a number of years says little about the work. Before a release, a test reads every page and fails if it finds one. The code is below, for anyone who wants to check it.
// Owner decision 2026-11-07: no numerical years-of-experience claim of any kind on this site.
const NUMBER = '(?:\\d+(?:\\.\\d+)?\\+?|one|two|three|four|five|six|seven|eight|nine|ten|eleven|twelve|fifteen|twenty)';
const YEARS = new RegExp(`\\b${NUMBER}(?:\\s+and\\s+a\\s+half)?[\\s-]+years?\\b`, 'gi'); What this doesn't show
The limits, stated plainly, so you can weigh the evidence.
- The site is new. This case is about how it’s built and checked, not about business results: there aren’t any to report yet.
- The release tests catch wording I’ve ruled out. They can’t judge whether a new sentence is true; I still have to.
What it shows about how I work
This is my own project, not client work. Here's what it says about my habits.
- I treat what a page claims as something to check, not only something to write.
- I look at layouts on a phone-sized screen first, because that’s where customers are.
- On my own sites, I release changes in a way that can be checked and reversed.
More work, and what it costs
Want your site built, or looked after?
Start with the free check: one page on what your customers see, written by me.