Skip to main content
    AbiBin Academy

    Case Study · 02

    True Care 247

    A family-run home care provider whose website had to be as honest as its carers.

    Home care — CQC regulated·Altrincham, Greater Manchester, United Kingdom·2026
    Visit True Care 247
    True Care 247 homepage: a carer holding an older woman close in a darkened room, under the headline 'Personal, dependable home care'

    The homepage. A family-run team in Altrincham, one carer matched to one family, said before anyone scrolls.

    Stack

    • Next.js 15 — App Router
    • React 19 + TypeScript
    • Tailwind CSS v4
    • Design tokens compiled from Markdown
    • Flat-file storage — no database
    • scrypt logins with role separation
    • Nodemailer over SMTP
    • nginx + systemd on shared EC2
    • Rehearsed, symlinked releases

    Delivered

    • Full rebuild off WordPress
    • Thirteen care service pages
    • Twenty-three town pages
    • Referral page for professionals
    • Enquiry capture and routing
    • Review capture with consent flags
    • Article editor and job adverts
    • Admin board with role separation
    • Editable 301 redirect map
    • Weekly summary email
    • SEO and accessibility audit script
    01

    Who came to us, and what they were up against

    True Care 247 Limited is a family-run home care provider in Altrincham, registered with the Care Quality Commission and covering Trafford, Manchester, Stockport, Cheshire East and Warrington. It was co-founded by a nurse, and the way the service assesses and oversees care still reflects that. What it did not have was a website that could carry any of it.

    The old site was WordPress, and it had the problems WordPress sites acquire when nobody owns them: articles published with no title tag and no meta description, so search engines had nothing to rank them on, and a structure the office could not change without a developer. The people it needed to reach — an adult daughter looking for care for her father, a hospital discharge team placing someone by Friday — were not finding it.

    The brief was not a redesign. Replace the site outright, keep every ranking URL alive through the switch, and hand the running of it to the office rather than to us.

    02

    The thing we had to get right

    Care is chosen under pressure. Somebody has had a fall, a discharge date has been set, or a family has finally admitted the current arrangement is not working. The reader is frightened, often at work, usually on a phone, and comparing three providers who all describe themselves as compassionate and professional. Nothing on a page like that persuades anyone unless it is specific.

    The second constraint is regulatory, and it shaped more of the build than the design did. A CQC-registered provider must not imply an inspection rating it does not have, must not claim a framework place it has not been awarded, and must not publish a service user's story without their consent. So the content model carries a verification flag: anything the client has not evidenced sits in the code marked unverified and is filtered out before render. It cannot be published by accident, because publishing it takes a code change, and the code change takes the evidence.

    That is why the site says, in plain words, that the provider is registered with the CQC and has not yet been inspected. It is the least flattering sentence on the page, and it is the one that makes every other sentence believable.

    The care services index, grouping thirteen services and opening with 'Day to day' — personal care and companionship, each card saying who the service is right for
    Thirteen services, each card ending in who it is actually right for rather than a list of tasks.
    03

    Why there is no database, and almost no cookies

    Every enquiry this site takes holds a name, a phone number and a description of what care somebody's relative needs. Under UK GDPR that is health data about a third party, handed over by a worried relative who has no idea what happens to it next. The right instinct with data like that is to hold as little of it as possible, in as few places as possible.

    So there is no database. Enquiries and reviews are written as monthly files on the server's own disk, articles and job adverts as one file each, and the whole store sits outside the deploy directory so that shipping a new release cannot delete a month of enquiries. There is no database server to patch, no connection pool to exhaust, and no second copy of anybody's health data sitting in a managed service in another jurisdiction.

    The same logic runs through the front end. The site sets no analytics, no advertising pixel and no session recording. One cookie exists, and only for the staff who sign in to manage the site. The consent notice says exactly that and lets a visitor read the stored values in full. A care website that quietly sells its visitors' behaviour to an ad network is not one you should trust with your mother.

    The Altrincham area page, listing WA14 and WA15, the local hospital, nearby landmarks and the office address on Manchester Road
    One of twenty-three town pages — its own postcodes, hospital and landmarks, not a name swapped into a template.
    04

    The decisions we made, and why

    The visual system lives in a single Markdown file, and the colour, type, spacing and motion values in it are compiled into CSS by a build step. No component may hardcode a colour. Change the file, run the build, and the whole site moves together — which matters, because the people who own this site after us are far more likely to open a Markdown document than a stylesheet.

    Where the design had a judgement call, we measured instead of arguing. The hero photograph is bright exactly where the headline sits, so the type needed a scrim behind it. The brand navy was the obvious choice and the wrong one: it reached 5.12:1 contrast while pushing a heavy blue cast across the photograph. A near-black scrim measured 5.47:1 and added no cast at all — it reads as shade rather than as a filter. The navigation capsule went through the same exercise and ended at 7.2:1. Both numbers are written down in the repository, so whoever touches them next knows they were decisions rather than defaults.

    Every element is present in the server-rendered HTML and readable with JavaScript switched off. The scroll reveals are additive: the page renders visible, then the animation takes an element down and brings it straight back. An earlier version did it the other way round and stranded thirty-four elements permanently invisible, because the trigger it used is unreachable for any block taller than the viewport. On a care site an animation bug is not cosmetic — it is a phone number nobody can see.

    Admin logins are generated, never chosen. A password a manager invents for a colleague is almost always a name and a year; the tool invents two ordinary words and two digits instead, from a word list picked to survive being read out over the phone. Only the scrypt hash is stored, and it is dot-delimited rather than dollar-delimited — because the framework runs dotenv-expand, which reads a dollar sign as a variable reference. It silently ate part of the hash and failed every sign-in while the file on disk looked perfectly correct.

    “In a regulated sector, a claim you cannot evidence is not a marketing problem. It is a compliance one.”

    05

    Handing the site to the office, not to us

    Roles came out of the same GDPR analysis as the storage. A marketing contractor writing blog posts has no lawful reason to read a list of people's care needs, and trusting them is not a lawful basis. So the marketing role reaches articles, search listings and job adverts and nothing else, enforced in the API routes as well as in the page gates — a hidden tab has never kept anybody out of anything.

    Articles are written in one textarea using conventions people already know, then parsed on the server into typed blocks. Nothing anyone types can inject markup into the site, and the layout stays the site's own rather than becoming whatever a page builder produced. Anything the format does not recognise becomes a paragraph, so there is no way to write something that refuses to save.

    Search titles and descriptions are editable, but only as overrides — every page still declares its own in code, and an empty override falls back to it. The consequence is the point: nothing anybody does in the admin can leave a page with no title tag, which is the exact state the old WordPress articles were in. The redirect map is editable too, because the mapping from old URLs to new ones comes out of Search Console rather than out of a developer's head, and a 301 carries most of a page's standing across while a 404 throws it away.

    The 'Six simple steps to starting care' page, numbering the process from the first phone call through a free home assessment
    The whole process, numbered, with the free stages marked as free. Nothing is agreed before a written care plan and a written price.
    06

    What it looks like now

    Fifty-five pages. Thirteen services, from personal care and companionship through dementia, live-in, night, respite, hospital-to-home, palliative and complex care. Twenty-three towns, each written for its own town — its postcodes, its hospital, its landmarks — rather than duplicated with the name swapped, because Google treats near-identical location pages as spam and readers notice too.

    A referral page for social workers, commissioners and discharge teams that answers the questions they actually ask: what the provider takes, how quickly it answers, and how to send a case over. The response commitments on it are the client's own, and the page says out loud that they apply during office hours. The version of that page which promises everything is the version nobody in a hospital believes.

    Behind it: an enquiry landing in the office inbox and on disk within seconds, a weekly summary email, a review flow that records consent separately from the review itself, a careers section, and the full legal set — privacy, terms, complaints, a plain-English data page, modern slavery and accessibility. An audit script checks every page for SEO and accessibility failures and has to report zero before a deploy proceeds.

    Deployment builds here and ships the result, because the server it shares with another client's site has under a gigabyte of memory and a build there would take both sites down. Each release is unpacked, started on a spare port under the real service account with the real configuration, and asked for a page. If it does not answer, the deploy stops and the old release carries on serving.

    The referral page for professionals, showing three response commitments: two working hours to acknowledge, one working day for a named coordinator, two working days for a costed proposal
    For discharge teams and social workers: the response times, with the caveat that they apply during office hours, on the page.
    07

    What we would tell the next client like this

    In a regulated sector the honest sentence outperforms the confident one. The instinct is to write around an awkward fact — an inspection that has not happened yet, a service that only runs in some postcodes. Every provider writes around it, which is why none of them are believed. Stating it plainly costs one sentence and buys the credibility of everything else on the page.

    The other lesson is about who owns the site afterwards. A care office is never going to raise a pull request. If the parts that change weekly — articles, vacancies, search listings, redirects — are not editable by the person who actually knows what needs changing, they will not be changed at all, and in two years the site is back where the WordPress one was.

    On a phone

    Where the decision actually happens.

    True Care 247 homepage on a phone, with a free assessment button in the header and a fixed bar of email, WhatsApp, phone and social links at the bottom
    The home page
    The contact page on a phone, opening by telling the reader they do not need to have everything worked out before getting in touch
    Reaching the office
    AbiBin Academy team celebrating together

    Ready to start?

    Let's build something
    that lasts.

    Whether you're modernising infrastructure, training your team, or re-thinking your analytics strategy — we'll show you how.

    Visit Contact Page

    43+

    Clients

    99%

    On-time delivery

    ISO
    9001

    Certified