About This Site
Why TinyShip exists, and what global buyers get
I am an independent developer, Viking. TinyShip is a modern full-stack starter for people shipping SaaS on gettinyship.dev. It is a working product skeleton: auth, payments, credits, storage, and three apps that share one set of libraries.
Why another starter?
Plenty of SaaS templates exist. TinyShip is aimed at the parts that usually get bolted on later:
- Flows that match a real product (accounts, checkout, credits, admin)
- A provider interface so you can change Stripe, storage, or email without rewriting the app
- A current stack (TypeScript, Tailwind CSS v4, Better Auth, Drizzle)
- A price that stays within reach of an indie budget
Built for a global launch
The English site assumes a global stack first:
- Payments: Stripe, Creem, and Dodo through
createPaymentProviderinlibs/payment/index.ts. PayPal and Alipay have their own guides. - Sign-in: Google and GitHub OAuth, plus email and password
- Storage: Cloudflare R2 or Amazon S3 (
oss | s3 | r2inconfig/storage.ts) - Locales: English at
/on gettinyship.dev.libs/i18nexportsdefaultLocale = 'en'
China (optional)
The same codebase can serve a China deployment. Turn these on only if you need them:
- WeChat login and WeChat Pay
- Alipay for one-time payments
- Aliyun SMS (enterprise signature filing required)
- Aliyun OSS
They are not required for gettinyship.dev.
Three apps, one set of libraries
Pick the frontend your team already knows. All three call the same libs/:
- Next.js for React
- Nuxt for Vue
- TanStack Start for a typed-router React app, including the Cloudflare Workers path
Shared pieces include auth, the database layer, payments, permissions, and i18n.
Stack
- Tailwind CSS v4 and shadcn/ui
- TypeScript and Zod
- Better Auth, Drizzle, and CASL
- Vercel AI SDK for chat and related AI flows
The default color scheme in config.ts is coss-orange, stored under tinyship-ui-theme-v6.
Swap a provider without a rewrite
Provider modules share one call shape. Changing payment provider is a string argument to createPaymentProvider:
import { createPaymentProvider } from '@libs/payment';
const payment = createPaymentProvider('stripe'); // or 'creem' | 'dodo' | 'wechat''wechat' is the China option. PayPal and Alipay are configured separately from this factory.
AI-assisted development
The repo is laid out so coding agents can follow it:
- Cursor rules under
.cursor/rules AGENTS.mdfiles in the libraries- Vercel AI SDK already wired for product features
Pricing
International SaaS starters are often priced around $100–$200. TinyShip stays intentionally lower so more developers can start from a complete base. Public prices live on the pricing page; this essay is not a price list.
What you still design
TinyShip ships the infrastructure. The product on top of it is yours:
- The idea and the business rules
- How the experience should feel
- How you talk to customers