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.