Opinionated multi-tenant SaaS foundation.
Build production-ready SaaS products with Bun, Next.js, TypeScript, and tRPC.
Designed Around Clear Boundaries
Feijoada separates product UI, control-plane APIs, and shared infrastructure packages so teams can focus on product development instead of repeatedly rebuilding tenancy and platform concerns.
Everything You Need to Ship
Production patterns for multi-tenant SaaS, built into the foundation.
Multi-tenant authentication
BetterAuth-powered auth with tenant isolation and session management
Role-based permissions
Granular RBAC with SSR-loaded permission checks
Stripe billing primitives
Subscription management, usage metering, and customer portal
SSR-loaded permissions
Server-side permission resolution for secure, fast page loads
Internationalisation
Type-safe i18n with locale detection and RTL support
Structured logging
Production-ready logging with correlation IDs and context
Dockerised local development
One command setup with docker-compose orchestration
Bun monorepo architecture
Workspace-native package management with shared configs
End-to-end type safety
Full-stack TypeScript from database to client
Shared infrastructure packages
Reusable auth, billing, and permission modules
Repository Structure
A clean monorepo architecture with clear separation between apps and packages.
/feijoada ├── /apps │ ├── /reference │ └── /demo ├── /packages │ ├── /auth │ ├── /billing │ ├── /permissions │ ├── /api │ └── /core ├── /landing └── /docs
Reference App
Minimal implementation demonstrating core patterns. Use as a learning resource or starting point.
Demo App
Production-style SaaS implementation with full feature coverage and realistic UI patterns.
UI-Library Agnostic
Core architecture packages work with any component library. Bring your own design system.
See It In Action
Watch a complete walkthrough of tenant onboarding, authentication, permissions, and billing flows.
Developer Experience
Fast iteration with modern tooling, from development to production.
$ bun install# ~500ms for full monorepo$ docker-compose up -d# Postgres, Redis, Mailhog$ bun dev# All apps in parallel
import { createEnv } from "@feijoada/env"export const env = createEnv({DATABASE_URL: z.string().url(),STRIPE_KEY: z.string().min(1),AUTH_SECRET: z.string().min(32),})
Sub-second installs
One command setup
Fast, consistent
Runtime validation
Opinionated By Design
Feijoada makes strong choices so you can move fast. We prioritize architecture consistency over configurability, production patterns over flexibility, and shipping over bikeshedding.
This isn't a framework that tries to support every possible stack. It's a foundation built for teams building real SaaS products who want to focus on their product, not platform infrastructure.
Focus on product development, not platform plumbing.
Get started with Feijoada and ship your SaaS faster.