OIDC SSO
SAML
SCIM Sync
Group Mapping
Audit Export
Delegated Admin
Evidence Pack
Say yes to the security questionnaire.
Single sign-on, directory sync, an audit trail they can pull into their own SIEM, and a portal so their IT admin stops emailing you. These are the controls procurement often requires before a larger customer can buy, built on everything in Professional. Coming soon.
60 modules and 173 implementation recipes. Every module runs on a clean clone with no vendor keys.
One payment. Lifetime updates. Unlimited projects. Prices in AUD.
The same foundation runs UnitBuddy, a live Australian SaaS. unitbuddy.com.au
What SaaSZero Enterprise gives you.
Professional plus SSO, SCIM, audit exports, and delegated administration. Coming soon.
Self-service SSO for the customer’s IT team
OIDC and SAML, with domain ownership proved by DNS TXT or a well-known URL and no third-party service in the loop. A domain can only ever be claimed by one organization, and that collision is refused at configuration time rather than at sign-in.
SSO registration hardened against SSRF
Staging a connection and fetching the discovery document are two separate steps. A discovery URL off the issuer origin is refused, and so is a document pointing its endpoints at a different host.
SAML defaults set to refuse, not accept
SHA-1 signatures rejected, unsigned timestamps rejected, IdP-initiated sign-in off, consumed assertion IDs remembered for 15 minutes, RSA keys under 2048 bits refused. Certificates rotate through pending, active and retired with several live at once, so a rotation costs no downtime.
SCIM users and groups, including a custom Groups endpoint
Better Auth brings /Users. The Groups endpoint did not exist, so the pack implements it: POST, GET, PUT, PATCH, DELETE and List with proper ListResponse, including the member-remove filter form that Entra ID and Okta actually send.
Directory groups that cannot escalate
A group can never create a membership, never change an owner, and when no mapped group remains a person falls back to member rather than silently losing access. Two mapped groups resolve to the higher role.
Reconciliation that exposes silent sync failures
Four lists: people in a directory group with no membership here, members no group claims, groups with no mapping, and sync events that changed nothing, naming the attribute that was dropped.
An audit trail the application cannot edit or delete
No code path edits or deletes an audit row. A correction is a new row referencing the original, within 30 days, and both appear in an export. Truncation is never silent: over 100,000 rows the run and the file both say so.
Exports they can schedule into their own SIEM
Daily, weekly or monthly, delivered as a signed HMAC-SHA256 POST to a target in their own organization, with three attempts before the schedule stops and alerts. Every file carries a SHA-256 checksum you can re-verify against storage.
Delegated admin, scoped from the resource
Their admin changes roles and reads their own audit trail without ever touching another tenant. Member changes need password re-authentication inside a 15 minute window, and the last owner cannot be removed or demoted, including by themselves.
A security questionnaire head start
14 seeded documents: 8 answered questions covering authentication, authorization, audit immutability, data location, encryption and subprocessors, plus 6 policy templates. Templates are labelled as templates in three places and the server re-adds the label if it is stripped.
What you get
This is the app you clone.
Not a landing page with a login button bolted on. A working multi-tenant product with a dashboard, a control plane, and every module reachable from the nav.



Authentication
Passwords, passkeys, MFA, OTP, OAuth, and session management—already wired
Better Auth handles credentials, sessions, MFA, and passkeys. SaaSZero adds the bridge that hands the verified session to your Convex functions, so an authenticated query works on the first run. Each method is its own page and component, so you can delete the ones you do not want.
Email and password
Sign up, sign in, reset, and verify, with a password step-up for sensitive writes.
Passkeys
WebAuthn registration, listing, and deletion. Sign in with face or fingerprint.
Two-factor (MFA)
TOTP authenticator enrollment plus backup codes, with a dedicated challenge route.
Magic link
One-click email sign-in that runs through the same transactional email queue.
Email OTP
Short-lived numeric sign-in codes delivered by email.
Phone OTP
SMS verification codes, gated behind an environment flag.
Social OAuth
Google and GitHub out of the box, plus a generic provider for any custom IdP.
Google One Tap
Returning users sign in from Google’s One Tap prompt when it is enabled.
Multi-session
Several accounts signed in at once, with per-device session management.
Anonymous sessions
Let people try the product as a guest, then upgrade the session on sign-up.
Username
Optional handles alongside email identity.
Last login method
Remember how someone signed in last time and hint it on the form.
Sign in with Ethereum
Wallet-based sign-in via SIWE for crypto-native products.
Admin plugin
List, promote, ban, and impersonate users from the platform admin.
Account security
Recovery flows, active session review, and connected account management.
Firebase bridge
Keep Firebase as the identity source and exchange it for a Better Auth session.
Referral codes
Invite, attribute, and reward. Built on top of the invitation flow.
Multi tenancy
Tenant isolation enforced in every public function
Better Auth owns organizations, members, and invitations. SaaSZero owns the resources keyed by organizationId. There are no duplicate tenancy tables to drift apart. Every public function validates its arguments, authenticates the caller, then authorizes a typed permission against the stored key, never the one the browser sent.
Organizations and teams
Personal and team organizations, with an active organization per session.
Roles and permissions
Owner, admin, and member out of the box, with typed permissions you can extend.
Invitations
Invite by email, accept through a dedicated route, and manage pending invites.
Audit trail
Every panel mutation is recorded and searchable behind a password step-up.
API keys
Scoped programmatic access for your customers' own integrations.
Outbound webhooks
HMAC-signed delivery with retries, so customers can react to your events.
Tenancy test suite
convex-test cases that assert cross-organization reads and writes are refused.
Platform admin
Overview, user projection, audit explorer, and integration labs.
Feature overrides
Flip a capability for one organization without shipping a deploy.
Enterprise includes everything in SaaSZero Professional.
This pack is not a separate product. It is the full Professional kit with the enterprise features added on top: identity, tenancy, billing, usage metering, AI with tenant-scoped RAG, automations, notifications, search, admin and the operations consoles.
See everything in ProfessionalAll 60 modules
60 modules, wired into the running app.
Nothing here is a placeholder or a TODO. Every module below is wired, tested, and reachable from the running app. Filter by the library it ships from.
Organization overview
Home dashboard
The signed-in home screen. Live activity, organization health and pending work for the current tenant, updating in realtime as teammates act.
Projects & tasks
Your team’s work
The reference product domain: projects and tasks scoped to an organization, with roles, plan limits, search, attachments and an audit history. Copy this pattern for your own resources.
Component labs
Prove integrations live
Executable documentation. One-click smoke tests prove feature access, workflows, analytics, errors and email against your own deployment, using debug adapters until real keys are set.
Settings & members
Account & team
Profile, organization switching, invitations, role changes, ownership transfer and sign-in security, in one settings surface every tenant gets.
Sign-in & identity
How people access your product
Every way into your product: email and password, MFA, passkeys, magic links, one-time codes, social login and multi-device sessions, all under Better Auth.
Organizations
Multi-tenant teams
The multi-tenant spine. Personal and team organizations with members, invitations and roles; every product row is keyed to its organization so tenants cannot see each other.
Two-factor (MFA)
TOTP + backup codes
Authenticator-app enrollment with a verification challenge after password sign-in, plus backup codes for when the phone is gone.
Passkeys
WebAuthn
Register, list and delete passkeys, then sign in with a fingerprint or face instead of a password. Standard WebAuthn, no extra service.
Magic link
Passwordless email
One-click sign-in links sent by email. Delivery runs through the same transactional email queue as the rest of the product, previewable locally.
Email OTP
Sign-in codes
Six-digit sign-in codes by email, for people who prefer a code to a link.
Phone OTP
SMS codes
SMS verification codes behind an environment flag, with codes logged locally so the flow is testable before an SMS provider exists.
Social OAuth
Google & GitHub
Google and GitHub sign-in that switch on when provider secrets are set, with the matching buttons appearing on the sign-in form.
Username
Optional handle
Optional public handles alongside email identity, for products where people are seen by name.
Anonymous
Guest sessions
Guest sessions for demos and trials, off by default, so someone can try the product before creating an account.
Multi-session
Device sessions
Several accounts or devices signed in at once, with a settings screen to review and revoke each session.
Last login method
Sign-in hint
Remembers how each person signed in last time and highlights that method on the form next visit.
Google One Tap
Env-gated
Google's returning-user prompt for one-tap sign-in, switched on by environment flag when you want it.
SIWE
Wallet sign-in
Sign-In with Ethereum for crypto-native products: wallet-based identity through the same session authority as every other method.
Generic OAuth
Custom IdP
Point identity at any custom OIDC or OAuth provider. The escape hatch for when a customer brings their own IdP.
BA Admin plugin
List · role · ban · impersonate
Operator tooling over accounts: list users, change roles, ban and unban, and impersonate for support. Separate from tenant-facing roles.
Firebase Auth bridge
Firebase identity · BA session
Keep Firebase as the identity source for phone, Google and email sign-in, and exchange its verified token for a session here. A migration path, not a rewrite.
Referral codes
Invite · attribute · reward
Invite codes with attribution: each user gets a unique code, sign-ups are credited to the referrer, and a reward hook fires.
Instagram OAuth
Login with Instagram
Instagram Business Login through the generic OAuth path, with the missing-email case handled and a helper for calling the Graph API afterwards.
Transactional email
Resend component
One chokepoint for every outbound email, with local previews before a provider is set, and Resend delivery, sandbox protection and templates after.
Analytics
PostHog + debug
A typed event catalog with redaction and consent state. Events log locally until a PostHog key is present.
Error reporting
Sentry + console
A global error boundary and intentional test exceptions. Errors go to the console until a Sentry DSN is set.
Durable workflows
Journal + replay jobs
Durable multi-step jobs that journal each step and replay after a deploy or crash. The pattern behind exports and every long-running task.
Private files
Convex · R2 · S3
Private file uploads with authorized URLs, attached to product records. Storage on Convex by default, with complete Cloudflare R2 and Amazon S3 paths.
Collaborative editor
ProseMirror OT sync
Real multiplayer rich-text editing with tenant-scoped access checks, server-side creation and plain-text search over document content.
Feature access
Flags & limits
The feature policy: plan defaults, kill switches, percentage rollouts, per-organization overrides and usage windows, every decision carrying a reason the UI can show.
Platform admin
Control plane
The platform control plane: users, organizations, an audit explorer and password step-up before any privileged change.
Just like SQL
SQL → Convex indexes
A translation guide from SQL habits to Convex indexes — joins, unions, distinct, group-by and filters — each with a live demo on real data.
Merging streams
Stream deep dive
A deep dive on composing query streams: merging, joining, filtering and paginating across indexes without loading whole tables.
TanStack Tables
Sort, search, filter
A realtime product table with column sorting, global search, filters and pagination. The pattern for every data grid you will build.
TanStack Forms
Validated product create
Schema-validated create and edit forms wired to server mutations, demonstrated on the same product catalog the tables render.
Rate Limiter
Token bucket · fixed window
Transactional rate limits at the function boundary: token buckets for bursts, fixed windows for quotas, per-user keys, already protecting the hot paths.
Migrations
Zero-downtime backfills
Resumable, batched backfills that rewrite live tables without downtime. The same machinery this codebase used for its own schema changes.
Action Retrier
Exponential backoff
Retries with exponential backoff for flaky third-party calls, ending in exactly one completion callback.
Workpool
Bounded background queues
Named background queues with parallelism caps, so a burst of jobs drains in order instead of stampeding a downstream API.
Architecture guide
Authz · ownership · tenancy
The written contract for the codebase: authentication versus authorization, ownership planes, tenancy rules and copy-paste examples for each.
Integrations guide
Provider matrix
The provider matrix: what runs with no keys, what each vendor adds, how to remove one, and the smoke test that proves it.
Polar billing
Merchant of record
Subscription billing with Polar as merchant of record behind a provider-agnostic adapter, webhook ingestion, and a bridge from plan to feature entitlements. A debug adapter simulates the whole path offline.
Stripe subscriptions
Checkout · Portal · Tax
The Stripe path: subscription checkout, the customer portal, signed webhooks and tax collection, feeding the same entitlement bridge as Polar.
Stripe Connect
Marketplaces & platforms
Marketplace and platform payments: onboarding sellers, routing charges between parties, and taking a platform fee.
Paddle billing
Merchant of record
Paddle as merchant of record: hosted checkout, subscriptions and VAT handled for you, mapped into the same feature entitlements.
Lemon Squeezy
Merchant of record
Lemon Squeezy as merchant of record for indie pricing: overlay or hosted checkout and subscription webhooks into the same entitlement bridge.
AI agent & chat
Convex Agent component
Persistent chat threads with real model replies and retrieval over the organization's own documents, with citations. A debug assistant answers offline until a key is set.
Usage metering
Per-user + aggregate
Per-user daily usage counters for chat, API calls and exports, with an aggregate path that keeps dashboards and plan limits fast at scale.
Presence
Who's online
Who is online, where, right now: heartbeat-driven presence with away detection, scoped to the organization.
Automations
Zapier-lite, native
When-this-then-that inside your product: record changes, inbound webhooks, cron ticks and meter thresholds trigger emails, signed webhooks, agent runs or tasks.
Background agents
AI that acts
Scheduled AI agents that act on the tenant's data — weekly summaries, task triage, anomaly watch — journaled so failed runs replay instead of vanish.
Usage-based billing
Meters → invoices
From meter to invoice: immutable usage events, hourly window close, a push to your billing provider, and quotas that warn at 80 percent and block at 100.
Notifications
Bell + digests
An in-app notification center with a live unread badge, per-user preferences, muted types, and daily or weekly email digests.
Global search
Cmd+K everything
One command palette over projects, tasks, documents, products and members, always scoped to the organization you are in.
saaszero CLI
add / remove modules
A written specification for module add and remove tooling: the removability contract, module manifests and marked regions, with notifications and search as the pilot scope.
API keys
Programmatic access
Customer-facing API tokens: generated once, stored only as digests, scoped to an organization and rate limited per key.
Outbound webhooks
HMAC + retries
Let customers subscribe to your events: signed deliveries, retries with backoff, and dead-letters that stay visible with their last status code.
Account security
Recovery & sessions
Password reset and recovery flows plus session review, with credential material living only in the identity layer, never in product tables.
Helpdesk
Example app · support queue
A complete support desk assembled from shipped modules: SLA timers, transactional replies, notifications, search and an audit trail. Three new tables, no new infrastructure.
CRM
Example app · deal pipeline
A complete deal pipeline assembled from shipped modules: a reactive board, bulk stage moves that fire automations, a live table and a computed forecast. Four new tables, no new infrastructure.
The stack
Convex and Better Auth at the core; email, analytics, errors, files, and billing behind adapters
A clean clone runs with no vendor keys at all. Without vendor keys, email renders locally, analytics stays in a redacted debug log, and errors go to the console. Set a key and the production adapter takes over behind the same interface.
Optional providers
Pricing
One payment. The whole codebase.
No seats, no subscription, no usage tier. You buy the source and it stays yours.
Coming soon
- Full source, yours to edit and own
- All 60 modules, nothing locked
- 173 implementation recipes
- Private GitHub repository access
- Lifetime updates, no renewal
- Unlimited projects, commercial use
- Client and freelance work allowed
- Support on the template codebase
Not for sale yet. Email sales@unitbuddy.com.au to hear when it ships.
Not sure yet? Ask first.
Because you get the complete source on purchase, there are no refunds. So it is worth being certain before you buy, not after. Email me for a product walkthrough or architecture questions; I will also tell you if SaaSZero is a poor fit for your project.
sales@unitbuddy.com.auLicence, in one line
Use it for your own products and for client work, on as many projects as you like. You may not resell it or publish the source.
Read the licenceTwo packs
One pack today. Enterprise on the way.
Professional combines the SaaS foundation and operations consoles that were previously sold separately. Enterprise adds SSO, SCIM and audit exports on top, and is coming soon.
Professional
The SaaS foundation and operations consoles, together in one pack.
$249
AUD once
In every pack
- Full source, yours to keep
- All 60 base modules
- 173 implementation recipes
- Lifetime updates, no renewal
- Unlimited projects, commercial use
Operations consoles
- 14 day dunning window
- Email delivery log
- Broadcasts with preview
- Stuck signup cohorts
- GDPR export and erasure
Enterprise · not included
- OIDC and SAML sign-on
- SCIM users and groups
- Append-only audit trail
- Delegated admin portal
Enterprise
Professional plus SSO, SCIM, audit exports, and delegated administration. Coming soon.
Coming soon
In every pack
- Full source, yours to keep
- All 60 base modules
- 173 implementation recipes
- Lifetime updates, no renewal
- Unlimited projects, commercial use
Operations consoles
- 14 day dunning window
- Email delivery log
- Broadcasts with preview
- Stuck signup cohorts
- GDPR export and erasure
Enterprise
- OIDC and SAML sign-on
- SCIM users and groups
- Append-only audit trail
- Delegated admin portal
One payment. Lifetime updates. Unlimited projects. All prices in AUD.
Questions before you buy?
For anything not covered below, email .
The deal does not stall on the IT review.
OIDC and SAML, SCIM users and groups, append-only audit with scheduled delivery, and delegated admin. Coming soon — email sales@unitbuddy.com.au to hear when it ships.
One payment. Lifetime updates. Unlimited projects.