Afterword is a personal site and small web workshop. It’s where I post short updates, field notes, photographs, check-ins, media notes, older archive material, and longer writing gathered into one place. It’s a bit of a digital garden.
I arrived at my content model from indie web PESOS logic, except that when it makes sense I try to save outside-generated material into my own AT Protocol Personal Data Server rather than leaving it entirely trapped in someone else’s product. It is very much an experiment, and also a learning project that has grown a little past the point of reason.
The site is built with Astro and runs on Cloudflare, with EmDash as the CMS behind it. Pages, posts, sections, forms, comments, menus, tags, categories, and much of the photo archive are now derived from the site instead of being stitched together from far-away services (e.g. Ghost).
A separate SvelteKit worker handles the messier sync and protocol work behind the scenes: Swarm/Foursquare check-ins, Bluesky and AT Protocol status processing, media normalization, webhook receivers, and a few other background tasks that are better handled by a dedicated service than by the public site itself. That split lets the public site stay simpler while the stranger machinery runs elsewhere.
Statuses come from Bluesky and AT Protocol. Check-ins are synced from Swarm into my own ATProto/PDS layer so they are not only trapped inside Swarm. The public site reads those dynamic streams through the sync worker, which keeps things faster and simpler than having the front end do that processing directly.
The gallery is intentionally more local now instead of being pulled from an outside publishing system. Images from photography, field notes, and gallery-tagged posts are copied into my own media storage and rendered through the site with responsive image routes and lightbox views. That makes the photographs feel like part of this place rather than remote embeds.
Music and media are still a little more federated. Some of that material begins in places like Crucial Tracks, Album Whale, RSS feeds, or my PDS, then gets normalized and gathered back into the site. The goal is not to hide the wider web, but to keep my own domain as the place where those things collect and become part of a fuller record, with an eye toward portability and ownership.
There is also some Standard.site and Bluesky syndication happening through EmDash and AT Protocol that I tweaked in the EmDash repo to get it functional. That part is still young, a little experimental, and exactly the kind of thing I like about this setup. Writing can begin here while still finding its way into other small-web and social-web spaces.
The larger point is still the same. I am not trying to build a product, but trying to keep a personal web home that can keep professional things, the wandering and photography parts, the music-obsessive parts, the family-and-garden parts, and the ordinary notes that would otherwise disappear into platforms built for speed instead of memory.
It’s handmade on purpose, and usually a little in motion, probably a little broken, because it is not only a living site but also a place to learn.