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.
始める
設定はやめて、構築を始めよう。
Nebutra CLI でスケーラブルな SaaS アーキテクチャをローカルに初期化します。
$ npx create-sailor@latestOpen source under the Apache-2.0 license. No credit card required.