Skip to content
DryDock Kit
  • Proof
  • Walkthrough
  • Features
  • Why DryDock
  • Pricing
  • FAQ
  • Docs
Pricing →
  • Proof
  • Walkthrough
  • Features
  • Why DryDock
  • Pricing
  • FAQ
  • Docs
Pricing →

DryDock Kit

From purchase to production

The path every buyer follows, with the real commands. Each step names the page in the download that covers it in full: the documentation index is docs/README.md, with one page per subsystem.

  1. Download
  2. Install and run
  3. Configure
  4. Organizations and roles
  5. Billing
  6. Check
  7. Deploy
  8. Vercel and other hosts
  9. Updates
  10. Troubleshooting and support

1. Download

Checkout is run by Dodo Payments. Your receipt email has the download link for the edition you chose. When a new 1.x release ships, you get an email with its download at the same address. The version is in the ZIP's name and in package.json.

2. Install and run

You need Node.js 20.9 or newer (22.12 for TanStack Start), npm, Docker with Compose v2, and Git. No Stripe, Razorpay, SMTP or cloud account is needed to install, run or test it. From the unzipped folder (on Windows, use Git Bash or WSL):

npm ci
cp .env.example .env              # then set AUTH_SECRET: openssl rand -base64 32
docker compose up -d              # Postgres + Mailpit
npm run db:migrate
npm run db:generate               # Prisma client
npm run saas:seed                 # demo@example.com / demo-password-123 (development only)
npm run dev                       # http://localhost:3000, emails at http://localhost:8025

You're running when you can sign in as the demo user and see the Acme Inc organization on its Pro plan. For the admin console, run npm run saas:grant-admin -- demo@example.com. npm ci reports three high-severity advisories; SECURITY.md explains each one and why it's accepted. Don't run npm audit fix --force: it downgrades Prisma a major version and breaks the data layer.

In the download: README.md (quick start), docs/getting-started/installation.md.

3. Configure

Every environment variable is validated by one schema when the app starts, and it refuses to start on an invalid configuration. With only the four core variables set, it runs on the Free plan with emails logged to the console. Name, plans, limits and permissions are plain config files: src/config/app.ts, src/config/plans.ts, src/config/permissions.ts.

In the download: docs/getting-started/configuration.md (every variable, dev and production), docs/getting-started/first-steps.md.

4. Organizations and roles

Organizations are the tenants, and every organization-scoped query filters on one. Members are Owner, Admin or Member, from one permission catalogue checked in the service layer. Custom roles are supported in the data model and services; there's no screen to create them yet. Every user also gets a personal workspace.

In the download: docs/organizations.md, docs/rbac.md, docs/multi-tenancy.md.

5. Billing

Configure Stripe, Razorpay, Paddle, Polar, several, or none. Start in each provider's test mode and complete a checkout end to end. Subscription state changes only when a verified webhook arrives. If you sell per-seat or metered plans, schedule the billing job every 5–15 minutes: npm run billing:report-usage from cron, or POST /api/cron/billing with your CRON_SECRET.

In the download: docs/stripe.md, docs/billing/razorpay.md, docs/billing/paddle.md, docs/billing/polar.md, docs/billing/models.md, docs/webhooks.md.

6. Check

npm test                # unit, integration and security suites on a real Postgres
npm run verify          # lint + typecheck + test + build
npm run saas:check      # your configuration: PASS / WARN / FAIL, with what to fix

saas:check is read-only, never prints a secret, and reports anything it can't verify (backups, DNS, webhook delivery) as a warning, never a pass.

7. Deploy

The documented and tested path is an Ubuntu server with Docker, and nginx (or CloudPanel) in front for HTTPS:

cp .env.production.example .env && chmod 600 .env    # fill it in
./scripts/deploy.sh      # build → saas:check → backup → migrate → reference data → start → health check

It isn't zero-downtime: the swap to the new container takes a few seconds. There's no automatic rollback; the rollback guide says what to do instead.

In the download: docs/deployment/ (vps.md, docker.md, rollback.md, migrations.md, github-actions.md, cloudpanel.md).

8. Vercel and other hosts

Vercel and other serverless platforms aren't supported or tested. Live notifications hold a connection open for up to 15 minutes, each instance opens up to 10 database connections, per-seat and metered billing need a scheduled job, and one limit is kept in memory per instance. An EC2 or Lightsail Ubuntu instance is a VPS, so the VPS guide applies; container services can run the Docker image but aren't documented. Kubernetes isn't planned.

In the download: docs/deployment/hosting.md.

9. Updates

You'll change the code, so an update is a git merge, not a replacement. Keep every unmodified release on a vendor branch and merge it into yours; conflicts appear only where you and the release changed the same file. Each release's changelog lists any manual steps. Every 1.x release is included; a 2.0 may be a paid upgrade.

In the download: UPGRADING.md. What shipped and when: the changelog.

10. Troubleshooting and support

Start with docs/operations/troubleshooting.md (symptom, cause, fix), then npm run saas:check, whose output is safe to paste into a support request. Then email support@drydockkit.com using the matching template in docs/support/request-templates.md. What support covers: the support policy. What you may build: the license.

DryDock Kit

The Next.js starter kit for multi-tenant B2B SaaS. Organizations, roles and billing, with the tests that prove them.

Support: support@drydockkit.com

Release notes by email

New versions and editions only. Unsubscribe any time. Privacy policy

Product

  • Proof
  • Walkthrough
  • What's included
  • Why DryDock Kit
  • Pricing

Resources

  • Documentation
  • Changelog
  • Security write-up
  • Support
  • FAQ

Legal

  • License
  • Terms of sale
  • Refund policy
  • Privacy
© 2026 DryDock Kit · Made by Abinithish Kumardrydockkit.com