Configuration
All MatchNest configuration is done via environment variables in your .env file and the Admin Panel.
Environment Variables
Database
| Variable | Default | Description |
|---|---|---|
DATABASE_URL | file:./dev.db | Prisma database connection string |
Authentication
| Variable | Description |
|---|---|
JWT_SECRET | Secret key for signing JWT tokens (min 32 chars) |
NEXTAUTH_URL | Full URL of your site (e.g. https://yourdomain.com) |
JWT_EXPIRES_IN | Token expiry duration (default: 7d) |
File Uploads
| Variable | Default | Description |
|---|---|---|
UPLOAD_MAX_SIZE_MB | 10 | Maximum file upload size in megabytes |
UPLOAD_ALLOWED_TYPES | image/jpeg,image/png,image/webp | Allowed MIME types for uploads |
Email (SMTP)
| Variable | Description |
|---|---|
SMTP_HOST | SMTP server hostname |
SMTP_PORT | SMTP port (typically 587 or 465) |
SMTP_USER | SMTP login username |
SMTP_PASS | SMTP login password |
SMTP_FROM | Sender address (e.g. MatchNest <[email protected]>) |
Admin Panel Settings
Most runtime configuration is available through the admin panel at /admin/settings:
- General — Site name, logo, tagline, contact email, support phone
- Registration — Toggle open registration, email verification, phone OTP, manual approval
- Social Links — Facebook, Twitter/X, Instagram, YouTube
- Maintenance Mode — Put the site in maintenance mode with a custom message
Subscription Plans
Plans are managed in the admin panel at /admin/packages. You can create, edit, and delete packages. Each package supports:
- Name, price, and billing period
- Feature flags (interests/month, messages/month, contact views, gallery photos, verified badge, profile boost, etc.)
- Custom descriptions
Database Configuration
MatchNest uses Prisma ORM with SQLite by default. For production, switch to PostgreSQL or MySQL:
# prisma/schema.prisma — change the provider
datasource db {
provider = "postgresql" // "sqlite" | "mysql" | "postgresql"
}
# Update DATABASE_URL in .env accordingly
DATABASE_URL="postgresql://user:pass@host:5432/dbname"After changing providers, run npm run db:push to recreate the schema.