Getting Started

Quick Setup

Automated setup script to get Nuda Kit running in minutes.

Get a fully working development environment with a single command. From the repository root, run:

./setup.sh

The script walks through every step of the Manual Setup automatically:

  • Preflight checks — Verifies Node.js 24+, npm, and a running Docker daemon, and detects port conflicts (5432, 6379, 8025) before they cause cryptic failures
  • Environment files — Creates backend/.env, backend/.env.test, and frontend/.env from their examples
  • Stripe (optional) — Prompts for your test secret key, starts the Stripe CLI container, and syncs the webhook signing secret into backend/.env automatically
  • Docker services — Starts PostgreSQL, Redis, MailHog (and Stripe CLI) and waits until they're reachable
  • Backend — Installs dependencies, generates APP_KEY, runs migrations, and seeds plans
  • Validation — Runs the full backend test suite to confirm everything works
  • Frontend — Installs dependencies

When it finishes, start developing:

cd backend  && npm run dev         # API on http://localhost:3333
cd backend  && node ace queue:work # Background job worker
cd frontend && npm run dev         # App on http://localhost:3000

Options

FlagEffect
--skip-stripeDon't prompt for a Stripe key or start the Stripe CLI container
--skip-testsSkip the backend test suite validation step
--yes / -yNon-interactive mode — never prompts; skips Stripe if no key is set
# Example: CI-friendly run without billing
./setup.sh --skip-stripe --yes

Safe to Re-run

The script is idempotent, so you can run it again at any time:

  • Existing .env files are never overwritten
  • An existing APP_KEY is never rotated
  • Running Docker containers are reused
  • Migrations only apply what's pending

Re-running is also the easiest way to re-sync the Stripe webhook secret, which rotates every time the Stripe CLI container restarts.


What It Can't Do for You

A few things still require human input:

Stripe secret key
Prompted during setup
Get your test key (sk_test_...) from the Stripe Dashboard under Developers → API keys. You can skip this and add it later.
Stripe Price IDs
Manual
Add your Price IDs to backend/database/seeders/plan_seeder.ts and keep the plan keys in sync with frontend/app/types/plan.ts. See Plans & Products.
OAuth & AI keys
Optional
Social login and AI providers need credentials in backend/.env. See Social Login and Vercel AI SDK.

Troubleshooting

IssueSolution
Port 5432 is held by container '...'Another project's container is using the port. Stop it with docker stop <name> and re-run
Docker is not runningStart Docker Desktop first
Node.js v24+ is requiredUpgrade Node.js — AdonisJS v7 doesn't run on older versions
Webhook secret not foundThe Stripe container needs a valid test key; check docker compose logs stripe
Tests failThe setup still completes; review the test output and see Testing

If you prefer to understand each step or the script doesn't fit your environment, follow the Manual Setup guide.


Need Help?

Discord Community

Join our private Discord for direct support.

Manual Setup

Follow the detailed step-by-step guide.