Work
Social content SaaS — autonomous post generation
A modular-monolith social content platform: onboarding with live brand extraction, one-command AI post generation, calendar scheduling, a multi-page design editor, billing and a job worker — runnable end to end on one machine.
TypeScript · Node.js · Prisma · PostgreSQL · Stripe · Docker
- Context
- A second product build in the social-content space — this one a deliberate contrast to service-heavy architectures: a modular monolith a single developer can run, inspect and evolve.
- Problem
- Producing on-brand posts for Instagram, Facebook, Threads, TikTok and X normally takes a designer, a copywriter and a scheduler. The product compresses that to one command: AI plus a brand kit decide layout, image and caption.
- Constraints
- Social platform APIs require app review and billing credentials, so those integrations ship behind mock adapters with every limitation documented. The whole product must boot locally with Docker — no cloud account needed to evaluate it.
- Role
- Lead developer — dominant author with nearly 500 commits.
- Architecture
- A TypeScript modular monolith on Prisma/PostgreSQL: workspaces with a singleton brand kit, live brand extraction at onboarding, autonomous post generation, calendar batch scheduling, a multi-page vector design editor with a template catalogue, media library, Stripe billing, super-admin and a background job worker.
- Key decisions
- A modular monolith over microservices — at this team size, inspectability and a one-command boot beat premature service splits. Mock provider adapters instead of hiding unfinished integrations, with limitations documented in the repo — the same honesty policy this site runs on. Brand extraction at onboarding so generation is on-brand from the first post.
- Outcome
- Runnable end to end today — auth, onboarding, generation, scheduling, editor, billing and worker all function locally. Not publicly launched; stated plainly rather than dressed up.
- Evidence
- Private repository; authorship verifiable from commit history.
- Confidentiality
- The product and its owner are not named here.