Quick Launch
The minimum configuration needed to run ShipNext locally.
This guide gets the project running with the smallest useful setup. If dependencies are not installed yet, start with Installation. After this page you should be able to verify sign-in, Dashboard, pricing, blog, and docs.
Environment variables
NEXT_PUBLIC_APP_URL='http://localhost:3000'
BETTER_AUTH_URL='http://localhost:3000'
# openssl rand -base64 32
BETTER_AUTH_SECRET='<your-better-auth-secret>'
DATABASE_URL=file:./app.dbGenerate BETTER_AUTH_SECRET with openssl rand -base64 32 or another secure random generator.
DATABASE_URL uses a local SQLite database by default. The database file is created in the project root as app.db, though you can choose another filename.
To switch to PostgreSQL, see Database.
Initialize the database
pnpm db:pushThis creates the local app.db file when using the default SQLite setup.
Temporarily simplify auth for local testing
ShipNext enables email verification by default. If email is not configured yet, users cannot complete registration. The template also enables captcha by default, so disable it temporarily until Turnstile, reCAPTCHA, or hCaptcha is configured.
In src/config/website.ts, update authConfig:
const authConfig = {
enableEmailVerification: false,
enableCredentialLogin: true,
enableMagicLinkLogin: true,
enableGoogleLogin: true,
enableGitHubLogin: true,
captcha: {
provider: "turnstile",
enable: false,
scenarios: {
signIn: false,
signUp: false,
},
},
};Start the app
pnpm devOpen http://localhost:3000.
Open the database console
pnpm db:studioDrizzle Studio opens at https://local.drizzle.studio.
Verify the main pages
- Sign in: http://localhost:3000/sign-in
- Profile settings: http://localhost:3000/dashboard/settings/profile
- Pricing: http://localhost:3000/pricing
- Blog: http://localhost:3000/blog
- Docs: http://localhost:3000/docs
If these pages open, the local auth, Dashboard, pricing, blog, and docs foundations are working.