Skip to content
Tech Stack

One stack, zero decisions

Queue, search, auth, billing and storage each have one answer — Better Auth, QStash, Postgres, Creem — behind an interface, not a picklist.

How it helps

One answer per domain

Better Auth for identity, QStash for queues, Postgres (pgvector + full-text) for search, Creem for billing — the interface stayed, the alternatives didn't.

TS-by-default backend

A documented policy for when Python is justified keeps the stack from sprawling.

China pairs, not a matrix

Payments (Creem + WeChat Pay/Alipay), SMS (Twilio Verify + Aliyun) and storage (R2/OSS on one S3-compatible client) keep a second adapter only where mainland law or network access makes the default unusable — both live as soon as their keys are set.

Powered by

FAQ

What if I need a provider that isn't kept?
Each domain still ships behind an interface — add an adapter without touching call sites. The ones that remain were kept because production runs on them, not because the interface only fits them.

Loslegen

Schluss mit Konfigurieren. Anfangen zu bauen.

Initialisieren Sie eine skalierbare SaaS-Architektur lokal mit der Nebutra CLI.

$ npx create-sailor@latest

Open source under the Apache-2.0 license. No credit card required.