DEV Community

Apoorv Darshan
Apoorv Darshan

Posted on

The Next.js 15 + React 19 stack behind a single-user posting dashboard

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
Enter fullscreen mode Exit fullscreen mode

Notable choices:

  • Next.js app routing handles both the dashboard UI and the local /api/* endpoints in one process. No separate backend service.
  • zod validates 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-tools publishes kind-1 notes to your relays.
  • image-size backs the per-platform media limit checks.
  • lucide-react and simple-icons for 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.

https://crossposter.apoorvdarshan.com/

Top comments (0)