Docs
Tutorial

Configuration

Configure environment variables and site settings

The .env file controls all runtime behavior. Here are the essential variables.

Database

# PostgreSQL (Recommended for production)
DATABASE_URL="postgresql://user:password@localhost:5432/tikship"

# MySQL
DATABASE_URL="mysql://user:password@localhost:3306/tikship"

# SQLite (Development only)
DATABASE_URL="file:./dev.db"

Authentication

# NextAuth Secret (Generate with: openssl rand -base64 32)
NEXTAUTH_SECRET="your-secret-key-here"
NEXTAUTH_URL="http://localhost:3000"

# Google OAuth (Optional)
GOOGLE_CLIENT_ID="your-google-client-id"
GOOGLE_CLIENT_SECRET="your-google-client-secret"

# GitHub OAuth (Optional)
GITHUB_ID="your-github-client-id"
GITHUB_SECRET="your-github-client-secret"

Site Configuration

Edit src/config/site.ts to customize your app metadata:

export const siteConfig = {
  name: 'Your App Name',
  description: 'Your app description',
  supportEmail: 'support@yourdomain.com',

  theme: {
    default: 'system',
    lightTheme: 'corporate',
    darkTheme: 'business',
  },

  locale: {
    default: 'en',
    supported: [
      { value: 'en', label: 'English' },
      { value: 'zh', label: 'Chinese' },
    ],
  },

  admin: {
    // Change this to obscure the admin panel URL
    path: '/my-secret-admin',
  },
}

Admin Path

The admin.path field controls the URL prefix for the entire admin panel. The default is /admin. Change it to any path you want to hide the admin panel from casual discovery:

admin: {
  path: '/admin', // default — change to something less obvious
}

All admin routes (login, dashboard, sub-pages) are automatically served under the new prefix. No other configuration is needed.

Obscuring the path adds a layer of protection but is not a substitute for strong passwords and proper authentication.

See Features for detailed configuration of payments, emails, and more.

Configuration | Tikship