What is ShipAny TanStack
ShipAny TanStack is a headless SaaS engine — auth, payments, subscriptions, credits, an admin panel, and i18n pre-wired so you can focus on your product.
ShipAny TanStack is a headless SaaS engine: pre-wired business logic with minimal UI. Instead of shipping yet another themed template, it gives you the machinery every SaaS needs — authentication, payments, subscriptions, a credit system, role-based access control, and internationalization — and stays out of the way of your product pages.
Why headless?
Most SaaS boilerplates couple their business logic to a specific landing page design. The moment you rebrand, you fight the template. ShipAny TanStack splits the codebase along a different line:
src/components/— durable primitives. Pricing tables, headers, sidebars, shadcn/ui. These survive a rebrand.src/blocks/— disposable page sections. They read your translations and wire content into the primitives. Rewrite them per project.src/features/— reusable auth, checkout, support, and ticket UI workflows.src/modules/— pure business logic. Payments, credits, subscriptions. Modules expose functions; application workflows compose the modules they need.
What's in the box
- Authentication — email/password and OAuth via better-auth, with session management and account linking.
- Payments — Stripe, PayPal, and Creem providers behind a single
PaymentManagerinterface. - Credits — FIFO consumption, expiration, auto-grant on signup, and revocation for usage-based billing.
- Admin — a single fixed-email administrator account manages users, billing, credits, and settings.
- Database — Cloudflare D1 with Drizzle ORM, including local D1 simulation for development and tests.
- i18n — Ten translation languages included, with English enabled by default and locale-aware routing via Paraglide.
Getting started
pnpm install
cp .env.example .env.development
cp wrangler.example.jsonc wrangler.jsonc
pnpm db:migrate
pnpm dev
Configure the local application URL and authentication secret in .env.development. The dev server uses a local D1 database; pnpm build creates the Cloudflare Worker. Before deployment, configure the production D1 binding in wrangler.jsonc and apply reviewed migrations with pnpm db:migrate:remote.