Every app I started, I'd lose the first few weeks to the same plumbing before touching the actual product. Auth. Org and team management. Roles and permissions. Stripe. Usage limits. Email. Notifications. Workflows. None of it differentiates anything. All of it is mandatory. And it's nearly identical app to app.
After doing it enough times I stopped treating it as work worth redoing and bundled it into one thing. That's BuildBase - one React/Next.js SDK plus a backend that handles the operations layer of a SaaS. Then instead of writing a landing page and hoping, I built four real products on top of it and shipped them.
Here's what's actually in it. Everything below is built and running - no roadmap, no coming soon.
Auth: hosted pages (login, register, magic link), email/password, magic link, Google and LinkedIn OAuth. Org-level RBAC for your team, plus a separate workspace-level permission matrix for your end users' teams.
Multi-tenant: org → many workspaces, each with its own plan and billing. Every org gets a physically isolated database, not a shared tenant_id schema.
Billing: bring your own Stripe, 0% platform fee. Usage-based and metered billing with real-time quota enforcement - Stripe meters usage fine, the annoying part is enforcing the limit the moment a user crosses it, and that's the part this actually does. Overages, seat billing, 22 currencies, non-destructive plan versioning so a price change never breaks existing subscribers.
Workflows: visual engine, 47 triggers, 11 actions, versions, instances, logs, wait steps. The lifecycle layer you usually pay for separately.
Notifications: one event fans out to email, web push, and Slack, gated at four levels.
Plus: email campaigns on your own sender (SMTP / Google OAuth), audience/CRM, feature flags, a content layer (collections, blogs, docs, forms), i18n with 8 locales, a full headless REST API with keys, and signed outbound webhooks.
The part I actually care about: self-hosting. Most tools in this space are cloud-only. This one splits - you run the tenant server on your own infra (your MongoDB, your Redis, anywhere Docker runs), I host only the dashboard, and the two talk over ES256-signed tokens so your data never touches my servers. One Docker command, public image. Every module works identically self-hosted. For anyone who cares where their data lives, that's the whole decision.
The reason I trust any of this: the four products I run on it in production use the exact same code that ships in the SDK — PlugNode (AI generation, metered per run), AgentCenter (B2B agent platform), RemoteWait (queue system for clinics/salons), LinkTracer (creator analytics). No demo-vs-real split. If the billing breaks, my own products break first.
Stack if you care: React/Next.js, MongoDB, Redis, BullMQ, Docker, GCS, ES256.
Links:
SDK - npmjs.com/package/@buildbase/sdk
Docs - https://docs.buildbase.app
Demo - https://demo.buildbase.app/
Self-hosting - https://www.buildbase.app/self-hosted
Question for this crowd:
One thing I've noticed is that infrastructure decisions have a habit of turning into product decisions later.
A lot of things feel interchangeable at the beginning billing models, tenant architecture, permissions, hosting but six months later they start determining what kinds of customers you can realistically support without rewriting half the system.
That's probably why rebuilding the same foundation over and over gets painful. You're not just rebuilding code, you're rebuilding future options.
Correct
Very similar story on my side. After rebuilding authentication, multi-tenancy, billing, notifications, and background jobs across several products, I finally pulled everything into a reusable framework (Kumiko, open source, built on Bun/Hono). These days it's the foundation for pretty much everything I launch.
I'm curious about your plans for BuildBase. Are you thinking of open-sourcing it or keeping it proprietary?
I ultimately chose the open-source route because it helped establish trust with developers and made adoption much easier. The business model sits on top of it through a hosted platform and additional services rather than the framework itself.
i'm going to make it proprietary, with self-hosting available.