Configuration
Environment variables, runtime config, and application settings for Reqcore. Covers database, storage, authentication, and SEO configuration.
Configuration
Reqcore uses environment variables for all configuration. Variables are validated at startup using Zod — if any required variable is missing or malformed, the server fails immediately with a clear error message.
Environment Variables
Required Variables
| Variable | Description | Example |
|---|---|---|
DATABASE_URL | PostgreSQL connection string | postgresql://user:pass@localhost:5432/reqcore |
BETTER_AUTH_SECRET | Session signing secret (min 32 chars) | Generated by setup.sh |
BETTER_AUTH_URL | Public URL of the application | http://localhost:3000 |
S3_ENDPOINT | S3-compatible storage endpoint | http://localhost:9000 |
S3_ACCESS_KEY | Storage access key | minioadmin |
S3_SECRET_KEY | Storage secret key | minioadmin |
S3_BUCKET | Storage bucket name | reqcore |
S3_REGION | Storage region | us-east-1 |
Optional Variables
| Variable | Description | Default |
|---|---|---|
S3_FORCE_PATH_STYLE | Use path-style S3 URLs (required for MinIO) | true |
NUXT_PUBLIC_SITE_URL | Public site URL for SEO | https://reqcore.com |
DEMO_ORG_SLUG | Show read-only demo banner for this org | (empty) |
LIVE_DEMO_EMAIL | Prefill sign-in with demo email | demo@reqcore.com |
LIVE_DEMO_SECRET | Prefill sign-in with demo password | demo1234 |
GITHUB_FEEDBACK_TOKEN | GitHub PAT for in-app feedback | (empty) |
GITHUB_FEEDBACK_REPO | GitHub repo for feedback issues | (empty) |
NUXT_PUBLIC_GISCUS_REPO_ID | Giscus repo node ID for comments | (empty) |
NUXT_PUBLIC_GISCUS_CATEGORY_ID | Giscus category node ID for comments | (empty) |
Environment Validation
All environment variables are validated in server/utils/env.ts using Zod schemas. This ensures:
- Fail-fast: Missing or invalid variables crash the server at startup, not at runtime
- Type safety: Every variable is typed and available via the
envutility - No stale values: The validation catches old domain names or malformed URLs
// Access environment variables in server code:
import { env } from '~/server/utils/env'
// env.DATABASE_URL — always a valid string
// env.S3_BUCKET — always a valid string
Important: Never access
process.envdirectly in server code. Always use the validatedenvutility.
S3 Storage Configuration
Local Development (MinIO)
The default Docker Compose setup includes MinIO with path-style URLs:
S3_ENDPOINT=http://localhost:9000
S3_ACCESS_KEY=minioadmin
S3_SECRET_KEY=minioadmin
S3_BUCKET=reqcore
S3_REGION=us-east-1
S3_FORCE_PATH_STYLE=true
Production (Railway Buckets / AWS S3)
For production deployments using Railway Buckets or AWS S3, use virtual-hosted-style URLs:
S3_FORCE_PATH_STYLE=false
Railway injects storage credentials automatically via template variables.
Authentication
Reqcore uses Better Auth with the organization plugin for multi-tenancy. The key configuration:
BETTER_AUTH_SECRET— Must be at least 32 characters. Generated automatically bysetup.sh.BETTER_AUTH_URL— Must match the public URL where users access the app. For local dev:http://localhost:3000. For production: your domain (e.g.,https://reqcore.com).
SEO Configuration
SEO settings are defined in nuxt.config.ts under the site key:
site: {
url: 'https://reqcore.com',
name: 'Reqcore',
description: 'Open-source applicant tracking system...',
defaultLocale: 'en',
}
These values are shared across all SEO modules (Sitemap, Robots, Schema.org).
Next Steps
- Quick Start — Start using Reqcore
- Docker Compose Deployment — Production-ready local deployment
- Railway Deployment — Deploy to Railway cloud