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_IDis set) - GitHub sign-in button (if
GITHUB_CLIENT_IDis 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:
- Go to
/billing - Click "Upgrade" on a plan
- You should be redirected to the DodoPayments checkout
- Use test card
4242 4242 4242 4242to complete a test payment - 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:
- Register a new account
- Check the Resend dashboard for the welcome email
- 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
- Deployment — ship to production
- Build Your First Feature — add functionality with Claude Code
- Customize Landing — make the landing page yours