SaaS / Multi-tenant

Churcheos

Un SaaS multi-tenant pentru administrarea bisericilor, cu facturare, interfață multilingvă și notificări procesate prin cozi.

Context

Organizațiile comunitare își coordonează activitatea prin calendare, liste de membri și un flux constant de anunțuri. Fiecare organizație este mică, însă există multe astfel de organizații. Acestea folosesc limbi diferite și, de regulă, nu au un departament IT. Această combinație indică un SaaS multi-tenant, nu câte o instalare separată pentru fiecare client.

Deciziile importante se iau devreme și devin costisitoare de modificat: cum sunt izolați tenanții, cum este asociată facturarea fiecăruia și cum sunt trimise notificările fără ca un furnizor lent să blocheze aplicația.

Ce am construit

Platforma acoperă administrarea tenanților, facturarea pe bază de abonament, conținutul multilingv și notificările trimise utilizatorilor.

  • Multi-tenancy — fiecărei cereri autentificate i se asociază o organizație, iar filtrarea după tenant este impusă în stratul de acces la date, prin code review și printr-o suită de teste API, pentru că este exact genul de eroare pe care nu îți permiți să o livrezi într-o bază de date comună.
  • Facturare — abonamentele și starea planului sunt legate de tenant. Furnizorul de plăți este tratat ca sursă de adevăr pentru starea plății, iar aplicația reacționează la schimbările acesteia.
  • Interfață multilingvă — interfața este disponibilă în engleză și română, cu rute localizate, iar configurația traducerilor permite adăugarea altor limbi fără modificarea codului de domeniu.
  • Notificări procesate prin cozi — mementourile programate (zile de naștere și evenimente apropiate) rulează ca joburi recurente într-o coadă bazată pe Redis și sunt livrate de un proces worker separat, astfel încât încetinirea sau indisponibilitatea furnizorului de e-mail afectează numai livrarea notificărilor, nu întreaga aplicație.
  • Module de domeniu — membri, roluri și permisiuni, evenimente cu programe și pagini publice de RSVP, o bibliotecă muzicală cu aranjamente și transpunere, donații și cheltuieli, prezență și rapoarte PDF.

Stack

Next.js/TypeScript peste Postgres cu Drizzle, Better Auth pentru conturi și roluri, Stripe pentru abonamente, cu webhook-urile drept sursă de adevăr pentru starea planului, BullMQ pe Redis cu un container worker dedicat și stocare S3 sau locală pentru fișiere. Nimic exotic — provocarea unui SaaS multi-tenant ține de rigoarea izolării datelor și a procesării în fundal, nu de alegerea framework-ului.

Status

Proiect privat. Metricile detaliate și referințele de la clienți sunt disponibile la cerere, sub NDA.

Ai ceva care merită construit?

Începe un proiect