Post

Can you help me understand how this works? Do you have a server listening to the firehose and building your site?

It's all just my data on my PDS so no need for the firehose. Just query/cache the records I care about as requests come in. Easy with SvelteKit.

So, wait, you have a server that reads, at runtime, the posts in your PDS and renders your website? Doesn't that require your server to be up and running all the time (as opposed to using eleventy and pushing to a cloud host provider?)?

Yep. I mean, there's always a server lol. Could do static generation from PDS with a cron or webhook or something but this is actually simpler I think?

my site is SvelteKit so SSR on first load then client side after that. But nothing stopping you from doing pure static site build with a webhook or whatever

thanks, but I assume I'd have to run a server myself that subscribes to the relevant atmosphere entries and then fires off the webhook? or is there something like that available in the atmosphere? Ideally, I'd want to keep things simple with a static site and no server I need to run myself.

yep, a jetstream watcher that fires off a webhook is what I'd do. if realtime doesn't matter github scheduled actions would let you poll your PDS every five minutes or so

One source of truth, many possible views is the right design. I've been chasing the same idea with single-file HTML apps. One file holds the data AND renders it, but its flexible enough to share its data with other apps too through an HTML-to-JSON API.

all my @skyreader.app shares render under /reading. All my @semble.so cards and collections render under /library. I don't maintain those pages. I share an article, drop a card, and the site catches up. One source of truth, many views. 2/2

What lexicon are you using for the content section? A custom one? I was working on an Offprint renderer in addition to a markdown renderer so I have some flexibility in blog system choice.

At the moment just markdown so the initial import of my existing posts was easy but I'm planning on also making a custom block based one so I can get custom embeds etc