Case study
OneForAll
One web app for the daily work of a solo founder: plan posts for Facebook, Instagram and LinkedIn, find and contact new clients, follow the jobs that fit your résumé and keep your tasks. AI writes the drafts with your own key, and nothing goes out until you approve it.
- Role
- Sole designer and developer
- Type
- Independent product
- Timeline
- 2026 – today
- Status
- Live, free to use
- Next.js
- TypeScript
- PostgreSQL
- Drizzle ORM
- pg-boss
- Better Auth
- Vercel AI SDK

Problem
I run several brands alone next to a developer job, and my tools were scattered. Posts were made by hand in repo folders, so many never went out. Leads lived in a paid prospecting tool, jobs came from several boards, and tasks lived in notes.
Ownership
I designed and built OneForAll on my own: the web app, the background worker, the database schema, the MCP server, the landing page and the server setup.
Constraints
- Nothing goes out without the user’s OK: no post is published and no message is sent unless that item was approved. AI only writes drafts.
- No made-up claims: AI drafts may only use facts stored in the app, such as the brand profile, a lead’s facts or the résumé, and checks run on every draft before it can be approved.
- It is a public app, so every table has a workspace id and every query goes through a helper that requires one. One user never sees another’s data.
- No fake data on screen: counts, scores and previews are real, or they are left out.
Architecture
The app is Next.js (App Router, TypeScript) with Server Actions and no separate API server, in English and French. Better Auth handles sign-up and sign-in, and its organization plugin is the workspace. Data lives in PostgreSQL through Drizzle, with real migrations.
Long work runs in a separate Node worker on pg-boss, a queue kept in Postgres: posts at their time, lead searches, website checks, job imports and AI batches. Each workspace has a limit on running jobs, so one busy user can’t block the others.
Business rules are plain TypeScript with no Next.js imports, so the screens, the worker and the MCP server share one copy of every rule. Each social platform is one module behind one interface and exports its rules as data (text limits, media rules), so the composer warns early and the worker rarely fails late.
An MCP server lets me list, schedule, edit and cancel posts from the terminal, through the same service code and checks as the screens.
Tradeoff
The worker must always be on, which Vercel can’t do, so OneForAll runs on one server with Docker Compose. A queue like Temporal or BullMQ would add more containers or Redis. pg-boss keeps jobs in the same Postgres database, so the server runs the web app, the worker and the database, and the nightly database backup holds the queue too. The cost is a little more load on Postgres, which is fine at this size.
Testing & reliability
- 436 unit tests in 45 files (Vitest) cover the platform rules, post checks, lead logic, the job feed, the worker queue, key encryption and workspace scoping.
- 59 Playwright tests in 13 files run the main flows (sign-in, Home, Social, Leads, Jobs, Work and Settings), each at desktop and phone size.
- Not done yet: other users can connect Facebook and Instagram only after Meta’s app review.
Outcome
OneForAll is live and free: anyone can sign up, add their own AI key and use Home, Social, Leads, Jobs and Work in English or French. I use it to run outreach for my own products.
Evidence
The landing page is public. The code is in a private repository.
More case studies
- Acta
Independent product
- MenuMate
Independent product
- KartaTunisie
Independent product
- Anywhere Jobs
Independent product
- PromptStream
Independent product