TinyShip
TinyShip
 TinyShip
TinyShip
TinyShip Documentation
TinyShip User GuideGetting StartedRecipesBasic Configuration
Credits System ConfigurationAffiliate System Configuration
Storage Service ConfigurationDatabase ConfigurationCaptcha Configuration
Development Best PracticesLocal E2E Workflow
User Guide

Recipes

Turn the TinyShip starter into a specific SaaS product with tinyship-recipe

Use tinyship-recipe to turn the starter into a specific product: an AI image or video app, a directory, a digital product store, a waitlist, and more. A recipe is a playbook your coding agent follows, not another hard-coded sub-template in the repo.

Why recipes instead of templates

Every extra sub-template would need its own copy for each of the three frameworks, and those copies drift as soon as the main starter changes. So instead:

  • Skills lock the contracts: schema, migration names, credit rules, which nav items to hide or keep, and acceptance checks
  • Your agent does the rest: homepage copy, page details, and brand-facing text for your product
  • Existing modules are reused: auth, payments, credits, and AI pages, with no duplicate stacks

Framework (Next.js / Nuxt / TanStack Start) and database (PostgreSQL / SQLite / D1) stay your choice, or you can pick them with tinyship-setup. A recipe never picks them for you.

Install and run

Recipes ship with the other TinyShip Agent Skills and work in Cursor, Claude Code, Codex, and other agents that support skills:

npx skills add TinyshipCN/tinyship-skills

Then just ask your agent, for example:

  • "Use a recipe to build a directory site"
  • "Turn this into an AI image app"
  • "Build an AI video generator"
  • "Build a waitlist page"
  • "Build a digital product store"
  • "Make a GPT wrapper with TinyShip"

This starts the tinyship-recipe wizard: detect the project → pick a recipe → run setup if needed → ask about scope, brand, and copy → apply → verify.

Available recipes

IDProductWhat it does
ai-imageAI image appReuses /image-generate, credits, and paid plans
ai-videoAI video appReuses /video-generate, credits, and paid plans; a failed video returns its credits
ai-chatAI chat / GPT wrapperReuses /ai, credits, and paid plans
membership-contentPaid membership siteReuses the blog, pricing, and premium pages
waitlistPre-launch waitlistSign-up first; hides payments and demos
directoryDirectory siteNew tables plus submit/review flow; paid listings with credits and ad slots
digital-productDigital product storeMulti-product catalog; real-money one_time unlock + download; no license in v1

Complex recipes (like directory and digital-product) add tables, pages, and acceptance scripts. Simple ones mostly rework navigation and copy around features TinyShip already has.

Recipe intros

ai-image

AI image app. Users sign in, spend credits on /image-generate, and buy more via plans. Other demos are hidden; Generate is promoted in the nav. After apply, configure an image provider key with tinyship-ai.

ai-video

AI video app on /video-generate + credits + plans. Needs a starter recent enough to store video jobs in the ai_video_task table (libs/ai/video-task-service.ts must exist). That is what lets a failed generation return its credits. If your project is older, the recipe stops and asks you to update the starter first.

After applying it, run tinyship-ai to add a video provider key (FAL_API_KEY, QWEN_API_KEY, or VOLCENGINE_ACCESS_KEY_ID). See AI video generation for models and per-model credit costs.

The recipe deliberately ships a minimal product: one generate page, credits, and plans. Your agent will suggest optional extensions at the end (a "My videos" list, a task detail page, an admin video list, clearer failure copy); it only builds them if you ask.

ai-chat

AI chat / GPT wrapper. Reuses /ai with credits and plans. Promotes Chat in the nav and hides image/video demos. After apply, configure a chat provider key with tinyship-ai.

membership-content

Paid membership site. Public blog teasers, pricing plans, and a gated premium page. Primary CTA goes to /pricing; Blog and Pricing stay in the nav. Configure a payment provider with tinyship-payment.

waitlist

Pre-launch waitlist. Auth is the product: hide pricing and demos, collect accounts via Better Auth signup (no extra waitlist schema). Switch to another recipe when you open the product.

directory

Directory site (complex). Home becomes the listing; signed-in users submit, admins approve; credits pay for listings and featured slots, plus hand-entered ads. Ships new tables, a migration, acceptance scripts, and an admin Directory entry.

digital-product

Digital product store (complex). Multi-product catalog; real-money one_time checkout on the product page; delivery is a purchase entitlement plus file download — no license key in v1. Hides Pricing, Demos, and Blog from the nav. New tables plus payment fulfillment hooks (providers untouched). Acceptance uses fake orders only — never live payment providers.

Verify the result

After the recipe is applied, check the running app in every locale you ship:

  1. The homepage describes your product, not the TinyShip starter pitch
  2. The primary CTA goes to the recipe's target page (image generator, submit form, sign-up, product page, etc.)
  3. Hidden demo links are gone from the header and footer (including mobile); the route files stay in place
  4. Sign-in and sign-up titles use your product name
  5. For complex recipes: required pages return 200, and migrations and seeds match the playbook

The logo text may still say TinyShip until you run tinyship-brand. That is expected and not a recipe failure.

How the skills divide the work

NeedSkill
Env, database, framework cleanuptinyship-setup
App name, logo, themetinyship-brand
Sign-in providers (OAuth, email)tinyship-auth
Payment providerstinyship-payment
AI provider keystinyship-ai
Turn the starter into a product typetinyship-recipe
Brand-new tables and pagestinyship-feature
Deploymenttinyship-deploy / tinyship-cloudflare

For where the product is heading, see the roadmap.

Getting Started

Set up and run TinyShip project in your local environment

Basic Configuration

Application name, Logo, theme system and internationalization configuration

On this page

Why recipes instead of templatesInstall and runAvailable recipesRecipe introsai-imageai-videoai-chatmembership-contentwaitlistdirectorydigital-productVerify the resultHow the skills divide the work