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.

Commencer

Arrêtez de configurer. Commencez à construire.

Initialisez une architecture SaaS scalable localement avec le Nebutra CLI.

$ npx create-sailor@latest

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