KitRocket

First Run

What happens when you start KitRocket for the first time, and how to verify everything works.

Once you've installed dependencies and set up your environment variables, start the dev server:

pnpm dev

Here's what happens and what you should see.

Step 1: Database setup

Push the schema to your database:

pnpm db:push

This creates all tables using Drizzle ORM. You should see output like:

[drizzle-kit] Pushing schema changes...
[drizzle-kit] Changes applied successfully

If you get a connection error, double-check your DATABASE_URL in .env.local. See Common Errors for fixes.

Step 2: Landing page

Open http://localhost:3000. The KitRocket landing page loads with:

  • Hero section with headline and CTA button
  • Features grid showing what your SaaS does
  • Pricing cards for your plans
  • FAQ accordion
  • Testimonials section
  • Final CTA with email capture

All content is editable in the component files under src/components/landing/.

Step 3: Authentication

Click "Get Started" or navigate to http://localhost:3000/register.

You should see:

  • Email/password registration form
  • Google sign-in button (if GOOGLE_CLIENT_ID is set)
  • GitHub sign-in button (if GITHUB_CLIENT_ID is set)
  • Magic link option
  • Link to login page

Create an account with email and password. After registration, you're redirected to the dashboard.

Step 4: Dashboard

After logging in, http://localhost:3000/dashboard shows:

  • Sidebar navigation
  • Welcome header with your name
  • Quick stats cards
  • Settings and billing links

Navigate to /settings to see the profile edit form. Navigate to /billing to see subscription management.

Step 5: Verify payments

If you've configured DodoPayments:

  1. Go to /billing
  2. Click "Upgrade" on a plan
  3. You should be redirected to the DodoPayments checkout
  4. Use test card 4242 4242 4242 4242 to complete a test payment
  5. The webhook fires and updates your subscription status

If you haven't set up payments yet, the billing page still loads — it just shows the free tier.

Step 6: Verify email

If you've configured Resend:

  1. Register a new account
  2. Check the Resend dashboard for the welcome email
  3. In development, emails appear in the Resend logs even without domain verification

Common first-run issues

"Module not found" errors

pnpm install

Run install again. Some packages may not have installed correctly.

Database connection refused

Make sure your Supabase project is active and the connection string is correct:

DATABASE_URL="postgresql://postgres.[ref]:[password]@aws-0-[region].pooler.supabase.com:6543/postgres"

Common mistakes: wrong password, wrong port (use 6543 for pooler), project paused.

OAuth buttons not showing

OAuth buttons only render when the corresponding environment variables are set. Check that GOOGLE_CLIENT_ID and GITHUB_CLIENT_ID are in your .env.local.

"AUTH_SECRET is not set"

Generate and add it:

openssl rand -base64 32

Paste the output as AUTH_SECRET in .env.local.

Port 3000 already in use

Kill the process using port 3000:

lsof -ti:3000 | xargs kill -9

Or run on a different port:

pnpm dev --port 3001

Hydration mismatch warnings

These are usually caused by browser extensions injecting HTML. Try in an incognito window. If the issue persists, check that you're not using Date.now() or Math.random() in server components.

Next steps

On this page