Launching today

Ottabase: The Solo Founders' Framework
Ship in days, not months. Cloudflare-native SaaS monorepo.
3 followers
Ship in days, not months. Cloudflare-native SaaS monorepo.
3 followers
Clone it, own it, ship faster. 45+ integrated packages: auth (Auth.js v5), RBAC, multi-tenancy with RLS, job queues, blog/CMS, realtime WebSockets, per-tenant branding, shadcn/ui, and way more. Built around OttaORM - a fat model system where business logic lives in models, not controllers. Auto-migrations, CRUD APIs, and TanStack Query hooks are all generated from a single model definition. Your code, your stack, your infra.







Hey Product Hunt! 👋
I'm the solo founder behind Ottabase, and I want to share what drove me to build it.
Every new side project I started followed the same painful pattern: two to four weeks of wiring up auth, multi-tenancy, RBAC, queues, and an email system before writing a single line of actual product code.
The frameworks I tried either locked me into a SaaS subscription, were heavily Node/server-dependent, or required me to bolt multi-tenancy onto an architecture that wasn't designed for it. I wanted something edge-native (Cloudflare Workers), truly open-source (clone and own), and opinionated enough that the boring decisions were already made.
So I built Ottabase over the past year: A monorepo with 45+ integrated packages covering everything from auth, RBAC, and job queues to a blog engine, realtime WebSockets, per-tenant branding, and full sets of UI components and libraries.
The two ideas I'm most proud of are OttaORM's "fat model" pattern and the Brand Engine. With fat models, you define your schema once in a model class and automatically get auto-migrations, a REST CRUD API, and TanStack Query hooks. Business logic lives in one place, and multi-tenant Row-Level Security is enforced at the ORM layer - not left as something you remember to wire up correctly.
The Brand Engine does per-route dynamic theming and templating, so each tenant can feel like they have their own product without you writing a single one-off CSS override. Those two pieces together are what make Ottabase feel like a real framework rather than just a collection of disparate packages.
I'd love to hear what you think especially the last para stuff, and what packages you wish were already included. AMA!