SaaS / Multi-tenant

Churcheos

A multi-tenant SaaS for church management, with billing, multilingual support and queue-driven notifications.

Context

Community organisations run on schedules, membership lists and a constant stream of announcements. Each organisation is small, but there are many of them; they operate in different languages, and none has an IT department. That combination calls for multi-tenant SaaS rather than an installation per customer.

The decisions that matter are made early and are expensive to change later: how tenants are isolated, how billing maps onto tenants, and how notifications go out without a slow provider blocking the application.

What we built

The platform covers tenant management, subscription billing, multilingual content and outbound notifications.

  • Multi-tenancy — every authenticated request resolves to an organisation, and every query is scoped to it, a rule enforced in code review and by an API test suite, because that is the class of bug you cannot ship in a shared database.
  • Billing — subscriptions and plan state are tied to the tenant, with the billing provider treated as the source of truth for payment state and the application reacting to it.
  • Multilingual support — the interface ships in English and Romanian with localised routes, and the translation setup is ready for more languages without touching the domain code.
  • Queue-driven notifications — scheduled reminders (birthdays, upcoming events) run as repeatable jobs on a Redis-backed queue and are delivered by a separate worker process, so a slow email provider degrades delivery instead of the whole app.
  • Domain modules — members, roles and permissions, events with programmes and public RSVP pages, a music library with arrangements and transposition, donations and expenses, attendance and PDF reports.

Stack

Next.js/TypeScript on Postgres with Drizzle, Better Auth for accounts and roles, Stripe for subscriptions with webhooks as the source of truth for plan state, BullMQ on Redis with a dedicated worker container, and S3 or local storage for files. Nothing exotic — the difficulty in multi-tenant SaaS is discipline about isolation and background work, not the choice of framework.

Status

Private engagement. Detailed metrics and client references are available on request under NDA.

Have something worth building?

Start a project