afterwards-content

content.estateadmin.app

The content host for the Afterwards iOS app. Serving corrected guidance from here is what lets a factual fix reach users in hours instead of waiting on App Review.

Only build output lives here. The source YAML, the validator and the build script stay in estate-admin-content; publish with Scripts/publish.sh from that repo rather than editing anything in this one by hand.

The contract the app expects

ContentService asks for exactly two things, relative to https://content.estateadmin.app/:

  1. manifest.json, requested with the local cache bypassed:

    {
      "jurisdictions": {
        "EW": { "content_version": 4, "file": "content-ew-v4.json",
                "sha256": "…", "bytes": 68384 }
      }
    }
    
  2. The file named in file, if and only if its content_version is greater than the version already installed.

Three things are then checked before the download is allowed anywhere near a checklist, and a failure at any of them leaves the existing content untouched:

A network failure is silent by design. Someone in the middle of a bereavement must never see a sync error, and the copy compiled into the app is always a working fallback.

Publishing an update

From estate-admin-content, after the YAML change is made and content_version bumped:

python3 validate.py && python3 build.py && Scripts/publish.sh

Never hand-edit manifest.json here. The checksum is what stops a truncated or tampered download reaching a grieving family, and a manifest written by hand is how that protection quietly stops working.

Keep the previous version

The publish script leaves older content-ew-v*.json files in place on purpose. If a release turns out to be wrong, pointing manifest.json back at the previous file is the fastest rollback there is — and it only works if that file is still being served.

Why this is a separate repository

GitHub Pages allows one custom domain per repository, and estateadmin.app is already taken by afterwards-site.