Centralize PROJECT_* in feeds covers the hardcoded title and the empty BASE_URL. The live output has more problems than constants, all visible in curl https://sveleton.ramilkarimov.me/feed.json.

Current State

  • feed_url is http://sveltekit-prerender/feed.json and the Atom <id> is http://sveltekit-prerender/feed.xml/ — the endpoints serialise the prerender request url instead of PROJECT_URL
  • Every item's id, url and Atom <link> are relative (/todos/.../); feed readers resolve them against nothing
  • summary and image are "" on every item: page-renderer.svelte.js reads a meta context store that Meta.svelte no longer writes to, so the description and og:image lookup is dead code
  • content_html contains Svelte hydration markers (<!--[-->, <!--]-->) and the full Publication chrome (breadcrumbs, author block, CTA) instead of the article body
  • Breadcrumbs inside content_html link to /src/routes/(demo)/todos/... because createSvelteKitStateMocks() uses the file path as the page URL
  • feed.xml adds index minutes to duplicate dates to keep <updated> unique — a workaround for a sort key, not a feed concern

Tasks

  • Build all feed URLs from PROJECT_URL, never from the request
  • Take summary from meta.description and image from the resolved cover; delete the meta-store lookup
  • Render only the article body for content_html (a body snippet, or strip section.article-info and PublicationBottom), and strip hydration comments
  • Mock the public URL, not the file path, in the renderer state
  • Validate the output with a JSON Feed and Atom validator in CI

Feeds a reader can use

Absolute links, clean HTML, real summaries

A static site template built with SvelteKit.

Sveleton, 2025