Skip to content

Add config system and POSSE syndication

jedmund requested to merge posse-syndication into main

Created by: jedmund

Summary

  • Adds centralized config system with DB settings + env var fallback, replacing all process.env usage across services
  • Adds POSSE syndication engine for Bluesky and Mastodon with auto-syndicate on publish
  • Adds syndication status UI, social replies component, and syndication API routes
  • Adds Syndication and Setting models with migrations

Details

Config system (src/lib/server/config.ts): All services (Last.fm, Cloudinary, Apple Music, Bluesky, Mastodon) now use getConfig() instead of process.env. Settings are read from DB first, falling back to env vars.

Syndication engine: Posts, projects, and albums can be automatically syndicated to Bluesky and Mastodon on publish. Includes .well-known/atproto-did endpoint for Bluesky domain verification.

UI: Syndication status component shows syndication state on edit forms. Social replies component displays replies from syndicated platforms.

Test plan

  • Verify dev server starts without errors
  • Verify existing API routes still work (Last.fm, Cloudinary, Apple Music)
  • Test publishing a post and verify syndication triggers
  • Check syndication status displays correctly on edit forms
  • Verify .well-known/atproto-did endpoint returns correct DID

Merge request reports

Loading