Skip to content

Environment variables

All environment variables required to run Classmoji

NameRequiredDefaultDescription
DATABASE_URLYesPostgreSQL connection string for the Classmoji database.
BETTER_AUTH_SECRETYesSecret used to sign auth sessions and tokens. Generate with openssl rand -base64 32.
WEBAPP_URLYesPublic base URL of the main web app (e.g. http://localhost:3000).
SLIDES_URLYesPublic base URL of the slides service.
PAGES_URLYesPublic base URL of the pages service.
NameRequiredDefaultDescription
GITHUB_APP_NAMENoSlug of your Github App, used to build install and authorization links.
GITHUB_APP_IDNoNumeric ID of your Github App.
GITHUB_CLIENT_IDNoOAuth client ID for Github sign-in.
GITHUB_CLIENT_SECRETNoOAuth client secret for Github sign-in.
GITHUB_WEBHOOK_SECRETNoSecret used to verify incoming Github webhook signatures. Generate with openssl rand -base64 32.
GITHUB_PRIVATE_KEY_BASE64NoBase64-encoded private key for your Github App, used to authenticate API requests.

AI features (quizzes, syllabus bot, prompt assistant) run on Anthropic Claude. They are optional: when AI_AGENT_URL and AI_AGENT_SHARED_SECRET are unset, AI features are hidden and the related API routes return 503.

NameRequiredDefaultDescription
AI_AGENT_URLNoURL of the AI agent service. Enables AI features when set with the shared secret.
AI_AGENT_SHARED_SECRETNoShared secret used to authenticate the webapp to the AI agent.
ANTHROPIC_API_KEYNoAnthropic API key the AI agent uses to call Claude.
LLM_MODELNoclaude-sonnet-4-5Claude model used for quiz and chat evaluation.
EXPLORATION_MODELNoclaude-haiku-4-5Claude model used for code-aware quiz repository exploration.
EXPLORATION_MODENoControls the code-aware exploration behavior for quizzes.
OPENAI_API_KEYNoReserved. Not used by any current feature.
LLM_PROVIDERNoReserved. Only Anthropic/Claude is wired today.
NameRequiredDefaultDescription
STRIPE_SECRET_KEYNoStripe secret API key for subscription checkout and billing.
STRIPE_WEBHOOK_SECRETNoSecret used to verify incoming Stripe webhook signatures.
NameRequiredDefaultDescription
EMAILNoAddress used as the sender for outgoing email.
EMAIL_PASSWORDNoPassword (or app password) for the sending email account.
NameRequiredDefaultDescription
TRIGGER_API_URLNoBase URL of the Trigger.dev API. Leave unset to use Trigger.dev cloud.
TRIGGER_SECRET_KEYNoTrigger.dev secret key used to authenticate background job runs.
NameRequiredDefaultDescription
CLOUDINARY_CLOUD_NAMENoCloudinary cloud name for image and media uploads.
CLOUDINARY_API_KEYNoCloudinary API key for signed uploads.
CLOUDINARY_API_SECRETNoCloudinary API secret for signed uploads.
NameRequiredDefaultDescription
CALENDAR_SECRETNoSecret used to sign calendar feed (iCal) URLs. Generate with openssl rand -base64 32.