DocsGetting StartedConfiguration

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

VariableDescriptionExample
DATABASE_URLPostgreSQL connection stringpostgresql://user:pass@localhost:5432/reqcore
BETTER_AUTH_SECRETSession signing secret (min 32 chars)Generated by setup.sh
BETTER_AUTH_URLPublic URL of the applicationhttp://localhost:3000
S3_ENDPOINTS3-compatible storage endpointhttp://localhost:9000
S3_ACCESS_KEYStorage access keyminioadmin
S3_SECRET_KEYStorage secret keyminioadmin
S3_BUCKETStorage bucket namereqcore
S3_REGIONStorage regionus-east-1

Optional Variables

VariableDescriptionDefault
S3_FORCE_PATH_STYLEUse path-style S3 URLs (required for MinIO)true
NUXT_PUBLIC_SITE_URLPublic site URL for SEOhttps://reqcore.com
DEMO_ORG_SLUGShow read-only demo banner for this org(empty)
LIVE_DEMO_EMAILPrefill sign-in with demo emaildemo@reqcore.com
LIVE_DEMO_SECRETPrefill sign-in with demo passworddemo1234
GITHUB_FEEDBACK_TOKENGitHub PAT for in-app feedback(empty)
GITHUB_FEEDBACK_REPOGitHub repo for feedback issues(empty)
NUXT_PUBLIC_GISCUS_REPO_IDGiscus repo node ID for comments(empty)
NUXT_PUBLIC_GISCUS_CATEGORY_IDGiscus 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 env utility
  • 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.env directly in server code. Always use the validated env utility.

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 by setup.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