Skip to content

Configuration ​

Every setting of an instance lives in one file, /opt/candydati/.env, written by the installer. Edit it with:

bash
sudo candydati config

The command opens the file in your editor ($EDITOR) and applies the change when you close it. The file holds secrets: it is readable only by root. Keep a copy in your password manager.

The full list of variables, with defaults, is generated from the code: ENVIRONMENT.md. The commented example is .env.example.

Safety checks at start ​

The stack refuses to start with an example secret or a short one, with a PLATFORM_URL that is not https, or without a real email provider. The error names the variable, never its value. The installer generates secrets that pass these checks: you only meet them if you edit the file by hand.

Common settings ​

Identity ​

VariableDefaultMeaning
PLATFORM_NAMECandydatiname shown in the interface and in emails. Set it to your own name if you want
PLATFORM_URL(required)public https address of the instance
PLATFORM_SUPPORT_EMAILcontact address shown to users
PLATFORM_DEFAULT_LOCALEitdefault language: it or en
PLATFORM_TIME_ZONEEurope/Rometime zone of dates in emails

Who can join ​

VariableDefaultMeaning
SIGNUP_MODEinvite_onlyinvite_only: people join only through an invitation (plus the first owner). open: anyone can create an account
ORGANIZATION_CREATIONone_per_user with invite_onlywho may create organizations: open, one_per_user (one organization ever created per account) or instance_admins
INSTANCE_ADMIN_EMAILScomma-separated addresses that may always create organizations
BOOTSTRAP_TOKENoptional: your own setup code for the first owner's sign-up. Unset, the api derives one and prints the setup link in its logs

Every account confirms its email before the first sign-in, except the first owner, whose setup code confirms it. Two-factor authentication is available to everyone, and owners and admins can require it in their organization.

Public application form ​

VariableDefaultMeaning
APPLICATIONS_DAILY_MAX_PER_ORGANIZATION500applications per organization in 24 hours; above it the form answers politely that it is full
APPLICATIONS_DAILY_MAX_PER_JOB200the same, per job
RECEIPTS_DAILY_MAX_PER_ORGANIZATION300application receipt emails per organization per day
NUXT_PUBLIC_TURNSTILE_SITE_KEY, TURNSTILE_SECRET_KEYoptional Cloudflare Turnstile check on the form. Off when empty: Cloudflare is never required

Job ads ​

VariableDefaultMeaning
PLATFORM_AD_QUALITY_THRESHOLD6quality score (0 to 10) below which an ad is flagged before publication. It never blocks publication

Other groups ​

Source available under the Business Source License 1.1.