A quick architecture tour for the curious. Crossposter is a Next.js 15 app on React 19, and the dependency list is short on purpose.
The whole thing ships as one npx-launchable package:
npx @apoorvdarshan/crossposter@latest # http://localhost:2004
Notable choices:
- Next.js app routing handles both the dashboard UI and the local
/api/*endpoints in one process. No separate backend service. -
zodvalidates the publish/schedule payloads, which matters a lot when an agent is hitting the API instead of a human. -
youtubei.js(InnerTube) powers the unofficial YouTube uploads. -
nostr-toolspublishes kind-1 notes to your relays. -
image-sizebacks the per-platform media limit checks. -
lucide-reactandsimple-iconsfor the UI and channel icons.
No database driver, no queue client, no auth/session SaaS SDK in that list, because none of those layers exist. State is local JSON and local session directories.
The payoff of keeping the surface narrow: it builds and runs the same on a Mac, a small VPS, or Render. "Self-hostable" stops being a checkbox and becomes the default, because there's nothing extra to provision.
It's all open and MIT-licensed if you want to read how the routes are wired.
Top comments (0)