ReadyKit – Superfast SaaS Starter

2 min read Original article ↗

Superfast SaaS starter

Ship your SaaS faster than your coffee cools.

ReadyKit gives you multi-tenant workspaces, Stripe billing, OAuth auth, and production-ready UI blocks. Zero boilerplate, maximum velocity.

Nike Studio

Monthly plan · 11 members

$14k

Lace Collective

Pro plan · 4 members

$4.8k

Solo Maker

Starter · 1 member

$499

Solo Flow

Login and get an instant workspace. No setup, no friction - straight to building.

Team Flow

Add teammates and controls appear. Workspace switcher, roles, invites, and audit logs built in.

Dev Flow

One helper call, zero context leaks. All queries auto-scope to the current workspace.

🏷️

Multi-tenant workspaces

Complete isolation that scales from solo builders to enterprise-grade customers.

  • Workspace-scoped models
  • Auto query filtering
  • Member admin UI

💳

Stripe billing baked in

Hosted checkout, subscription lifecycle, metered usage.

  • Portal ready
  • Webhook workflows
  • Fail-safe retries

🔐

OAuth + MFA login

Google and GitHub out of the box plus TOTP 2FA.

  • Passwordless friendly
  • Role-based access
  • Session hardening

Modern UX kit

Prebuilt dashboard screens, modals, and marketing blocks.

  • Responsive defaults
  • Accessible patterns
  • Code or no-code friendly

1

Clone & Setup

One script configures everything.

2

Configure Keys

Add OAuth and Stripe secrets.

GOOGLE_OAUTH_CLIENT_ID=your_id
STRIPE_SECRET_KEY=sk_test_...
STRIPE_PRICE_ID=price_...

3

Run & Deploy

Local dev or Docker production.

uv run flask create-db
uv run flask run
docker compose up --build

Define your model

from enferno.services.workspace import WorkspaceScoped

class Invoice(db.Model, WorkspaceScoped):
    workspace_id = db.Column(db.Integer, db.ForeignKey('workspace.id'))
    number = db.Column(db.String(50))
    amount = db.Column(db.Numeric(10, 2))
    # add your fields

Protect every route

from enferno.services.workspace import require_workspace_access

@app.get("/workspace//invoices/")
@require_workspace_access("member")
def invoices(workspace_id):
    invoices = Invoice.for_current_workspace()
    return render_template("invoices.html", invoices=invoices)

All queries auto-filter. Focus on value, not plumbing.

🐍 Python 3.11+

🔥 Flask 3

🟢 Vue 3 frontends

🗄️ PostgreSQL

💠 Redis

💠 Celery workers

💳 Stripe

🐳 Docker deploy

  • Use commercially
  • Modify & resell
  • No attribution required
  • Production-ready stack
  • Docker deployment
  • Community support

Get Started Free

Build and sell without limits.

No. Workspace scoping is automatic with ReadyKit helpers.

Yes. MIT license gives you total freedom to launch and sell.

Smooth. They never see workspaces, but they still get isolated data.

Nope. Billing hooks are optional, remove them or bring your own.