What ShipAgent is
ShipAgent is a complete Next.js SaaS whose every integration ships as a skill an AI agent follows, verifies with a check script, and stops on when a person is needed.
ShipAgent is a finished Next.js SaaS: sign-in, payments, database, email, file storage, AI and deployment are already built. You do not wire them yourself. You open the repository in an AI coding agent (Claude Code, Cursor or Codex), say what you want, and the agent connects each piece to your accounts by following a skill in skills/.
Every setup skill ends with a check script. The agent reports a step as done only when that script prints all checks passed. When a step needs a person (creating an account, pasting a key, a click in a dashboard that no API can make), the agent stops, tells you exactly where to click, and waits.
These docs are for you, the person. The agent reads the repository, not these pages.
Who does what
The agent does everything that is code, a command or an API call. You do the steps that need your identity, your money or your domain.
| The agent does | You do |
|---|---|
Writes .env.local and the production env files |
Create accounts (Neon or Supabase, Google Cloud, Stripe, Resend, Cloudflare, an AI provider) |
Generates secrets (BETTER_AUTH_SECRET, CRON_SECRET) |
Copy an API key or connection string from a dashboard and paste it |
| Runs the database migrations and creates your superadmin account | Name the email you sign in with as the site owner |
Creates Stripe products and prices from config/pricing.ts and registers the webhook |
Turn on payment methods in Stripe (the API cannot) |
| Adds your sending domain to Resend and prints the DNS records | Add those DNS records at your DNS provider |
| Writes the R2 CORS rule and tests a real upload | Create the R2 bucket and token, turn on public access |
| Calls the AI provider once to prove the key works | Add billing to the provider account |
Creates the Cloudflare resources, seals the env, deploys, checks /api/health |
Create the Cloudflare API token, attach your domain to the Worker |
| Builds new paid tool pages on top of the demos | Decide what the tool does, which model, and the price in credits |
| Runs the check script after every step and reads the failure table when one fails | Sign in once with Google, make one test payment, confirm a test mail arrived |
The full list of your steps, with where to click, is on one page: What you do.
What is in the box
Stack
| Part | What the repository uses |
|---|---|
| Framework | Next.js 16 (App Router), React 19, TypeScript 5 |
| Database | PostgreSQL through Drizzle ORM 0.44: Neon, Supabase or any Postgres |
| Sign-in | Better Auth 1.4 with the organization plugin (teams) |
| Payments | Stripe, PayPal and Creem; plans defined in config/pricing.ts |
| Resend, or Cloudflare Email Sending; templates written with react-email | |
| File storage | Cloudflare R2 (S3 API, presigned uploads) |
| Cache and rate limits | Upstash Redis, or any Redis through REDIS_URL |
| AI | Vercel AI SDK with OpenRouter, OpenAI, Anthropic, Google, DeepSeek, xAI, fal, Replicate, KIE, and any OpenAI-compatible API |
| UI | Tailwind CSS 4, shadcn/ui |
| Languages | next-intl 4 with 8 locales: en, zh, ja, fr, de, ko, es, it; a missing key falls back to English |
| Deploy | Cloudflare Workers (OpenNext, GitHub Actions) or Vercel |
| Monitoring | Pino logging, Sentry (optional), /api/health |
Features
- Sign-in: Google (with One Tap), GitHub, magic link and 6-digit email code. There is no email-and-password sign-in. Cloudflare Turnstile can guard the email sign-in routes.
- Roles:
user,admin,superadmin.pnpm create-superadmin <email>makes the site owner. - Teams: an organization is the billing subject, with a shared credit pool and a seat cap taken from the team plan.
- Payments: one-time licenses, subscriptions (monthly or yearly) and credit packs.
config/pricing.tsis the only place prices are defined; there is no pricing table in the database and no pricing admin page. Each plan names its provider and holds a test and a live price ID. - Credits: two buckets, subscription credits (reset on each grant) and purchased credits (never expire). Every change goes through one ledger and is logged. Annual plans grant monthly through a cron job.
- Email: sign-in link and code, welcome mail, newsletter welcome, team invitation, failed renewal, fraud alerts. The app sends no purchase receipt.
- Storage: admin and user uploads straight from the browser to R2, an R2 file browser for admins, and cleanup when a user deletes their account.
- AI demos: chat, image and video pages under
/ai-demo, open to admins only so your keys are safe. Theadd-tool-pageskill turns a demo into a paid tool that charges credits and refunds them when the call fails. - CMS: a blog and a glossary edited in the admin dashboard, plus MDX blog posts in
blogs/. - Admin dashboard: overview, users, orders, credits, coupons, feedback, blog, glossary, R2 files.
- User dashboard: billing, orders, credit history, team, settings, feedback.
- Analytics (optional): Google Analytics, Plausible, Umami, Rybbit, PostHog, Microsoft Clarity, AdSense, each switched on by its env variable.
Skills
| Skill | What it sets up |
|---|---|
setup-database |
Postgres connection, migrations, the superadmin account |
setup-auth |
Better Auth secret, site URL, Google sign-in (GitHub and Turnstile optional) |
setup-stripe |
Stripe key, products and prices, webhook, one signed test payment |
setup-email |
Resend key, sender address, domain verification, one real test mail |
setup-storage |
R2 bucket, token, public URL, CORS, a 1 MB upload round trip |
setup-ai |
One AI provider, a real call through the app's code, video webhooks |
add-tool-page |
A new paid AI tool page that charges credits |
deploy-cloudflare |
Cloudflare Workers through GitHub Actions |
deploy-vercel |
Vercel |
PayPal and Creem are built into the payment code but have no setup skill yet; skills/reference/payments.md describes them for the agent. How skills are written and checked: Skills.
Supported agents
- Claude Code finds the skills in
.claude/skills/and the project map inCLAUDE.md. - Cursor and Codex start from
AGENTS.mdat the repository root, which lists every skill and when to use it. - Any other agent works if it reads
AGENTS.mdand can run shell commands in the project folder. Every skill lists the exact commands it runs, so nothing depends on one vendor.
The agent needs to run pnpm, git and network calls on your machine. An agent that can only edit files, without a shell, cannot run the check scripts and cannot finish a skill.
Licenses
Both licenses are a single payment. They differ only in how long updates keep coming.
| One year | Lifetime | |
|---|---|---|
| Price | $79, once | $129, once |
| Full source code, unlimited projects | Yes | Yes |
| Every setup skill: database, auth, Stripe, email, storage, AI, deploy | Yes | Yes |
| Cloudflare Workers and Vercel deploy | Yes | Yes |
| Updates and new skills | For 12 months | Forever |
| Support | Discord | Priority support |
| Early access to new skills | — | Yes |
After purchase you receive access to the private repository.
No subscription, no credits
ShipAgent charges once. There is no ShipAgent subscription, no ShipAgent credits and no usage fee, and nothing in the code calls a ShipAgent server.
Your site runs on your own accounts and your own API keys. The services bill you directly for what you use: Stripe takes its fees per payment, your AI provider charges per call, and your database, email and hosting providers charge according to their plans. Deploying to Cloudflare Workers needs the Workers Paid plan, because the server Worker is larger than the free plan allows. Check each provider's current prices on its own site.
The credits inside the code are the ones your product sells to your users. They are yours to configure in config/pricing.ts and config/credits.ts.