Quick Start
Get Shipr running locally in under 10 minutes. This guide will walk you through cloning the repo, installing dependencies, and running your first local development server.Prerequisites
Before you begin, make sure you have:- Node.js 18+ installed on your machine
- pnpm package manager (
npm install -g pnpm) - A GitHub account (for cloning)
- Basic accounts for Clerk and Convex (free tiers available)
Installation
Install dependencies
Install all required packages using pnpm:This will install Next.js, Clerk, Convex, and all other dependencies listed in
package.json.Configure Clerk
Create a Clerk application
- Go to clerk.com and create a free account
- Create a new application
- Choose your preferred authentication methods (email, Google, GitHub, etc.)
Configure Convex
Create a Convex project
- Visit convex.dev and sign up
- Create a new project
- The Convex CLI will guide you through the setup
Initialize Convex in your project
Run the Convex development server:This will:
- Push your database schema to Convex
- Generate your deployment URL
- Start watching for schema changes
Keep this terminal window open - Convex needs to run alongside Next.js during development.
Configure Clerk authentication in Convex
In the Convex dashboard:
- Navigate to your project settings
- Go to Authentication settings
- Add your
CLERK_JWT_ISSUER_DOMAINvalue
Set Site URL
For local development, set your site URL in.env:
Start the Development Server
Now you’re ready to run Shipr locally!Open your browser
Navigate to http://localhost:3000You should see the Shipr landing page!
Test Authentication
Sign up
Click the “Sign Up” button in the header and create a test account using any of your configured authentication methods.
Complete onboarding
After signing up, you’ll be redirected to the onboarding flow. This multi-step process welcomes new users and captures their information.You can skip onboarding if you want to explore the dashboard directly.
What’s Working
At this point, you have: ✅ Next.js 16 running with App Router✅ Clerk authentication with sign-up/sign-in flows
✅ Convex database with real-time sync
✅ User sync between Clerk and Convex
✅ Protected dashboard routes
✅ Onboarding flow for new users
✅ Dark/light theme switching
Optional: Add More Services
To enable additional features, you’ll need to configure:- Resend for transactional emails (see Installation guide)
- Vercel AI Gateway for AI chat (see Installation guide)
- PostHog for analytics (see Installation guide)
- Sentry for error tracking (see Installation guide)
These services are optional for local development but recommended for production deployments.
Available Scripts
Here are the key commands you’ll use:Next Steps
Complete Installation
Set up all optional services for full functionality
Architecture
Understand how Shipr is structured
Authentication
Deep dive into Clerk and user management
Deployment
Deploy your SaaS to production
Troubleshooting
Convex authentication errors
If you see authentication errors, verify that:CLERK_JWT_ISSUER_DOMAINis set correctly in both.envand Convex dashboard- You’ve restarted both
npx convex devandpnpm devafter changing environment variables
User not syncing to Convex
If your Clerk user doesn’t appear in Convex:- Check the browser console for errors
- Verify your Convex deployment URL is correct
- Make sure you’re signed in and visiting a dashboard page (user sync happens on protected routes)
Port already in use
If port 3000 is already in use:NEXT_PUBLIC_SITE_URL to match the new port.