Context
An agency posting on behalf of many clients is doing the same loop over and over: draft the content, get the client to sign off, then log into each network to publish at the right time.
Problem
Native schedulers are per-account and per-network, so managing twenty clients means twenty logins and no shared view of what's queued. Approvals happen over email, which means the version that ships isn't always the version that was approved.
Solution
A multi-tenant platform where each client is a project with its own connected accounts. Posts are composed once and published to Facebook, Instagram, LinkedIn, X, and Google Business, with a scheduler service handling timed delivery. AI-assisted generation drafts copy — including bulk generation for filling a calendar — and every post moves through an explicit approval workflow before it can go out.
The API is Express and TypeScript over Sequelize and PostgreSQL, with JWT auth and Joi validation. The client is Next.js 15 App Router with route groups separating public auth pages from the protected app, shadcn/ui components, and React Query for server state.
Outcome
Scheduling, drafting, and sign-off collapsed into one queue, with a single audit trail of what was approved and what actually published.