Afterword is an Eleventy static site front end for a Ghost CMS backend.
It is not a Ghost theme. Ghost remains the content source of truth, and Eleventy builds a filtered, custom-designed static site from that content for deployment.
- Ghost provides posts and site data through the Content API
- Eleventy renders the public static frontend
- Netlify deploys the generated
_siteoutput
The site currently pulls in posts tagged with one or more of these tags:
afterwordstatuslisteningbooksgallery
Some legacy tags are still tolerated during migration:
nownow-playingnow-readingphotos
GHOST_URLGHOST_ADMIN_URLGHOST_ADMIN_KEYSITE_URLMICROPUB_TOKEN(shared bearer token for Micropub clients)INDIEAUTH_SECRET(HMAC secret for IndieAuth auth codes and access tokens)INDIEAUTH_PASSWORD(password you enter on the/authapproval screen)GITHUB_TOKEN(GitHub token with repo write access)GITHUB_REPO(owner/repo, used by Micropub function to commit status markdown)
Optional:
GITHUB_BRANCH(default:main)MICROPUB_STATUS_DIR(default:src/status)MICROPUB_MEDIA_DIR(default:src/assets/status-images)SITE_LOGO(override local avatar path)
yarnyarn startyarn buildThis site includes a Netlify Micropub endpoint at:
/micropub/micropub/media- IndieAuth authorization endpoint:
/auth - IndieAuth token endpoint:
/token
Current behavior:
- Supports create (
h-entry) posts. - Writes new markdown files into
src/status/via GitHub API commits. - Returns
201 Createdwith aLocationheader to the new permalink. - Supports
q=configandq=syndicate-to. - Supports media upload via multipart
filefield at/micropub/mediaand returns201with mediaLocation. - Supports IndieAuth code flow for mobile Micropub apps.
Current limitation:
- Media endpoint currently supports one uploaded file per request (
filefield).
The current visual direction is a personal adaptation of the earlier Afterword site I built on Pika.page. This repo is its own Eleventy implementation, but that earlier site was the design reference point.