ShipNext

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.db

Generate 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:push

This 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 dev

Open http://localhost:3000.

Open the database console

pnpm db:studio

Drizzle Studio opens at https://local.drizzle.studio.

Verify the main pages

If these pages open, the local auth, Dashboard, pricing, blog, and docs foundations are working.

On this page