Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.aspfox.com/llms.txt

Use this file to discover all available pages before exploring further.

Copy .env.example to .env and fill in the values. Variables marked Required must be set for the application to start. Optional variables enable specific features that degrade gracefully when absent.
Setting ENVIRONMENT=Production changes several behaviors: Swagger is disabled, detailed error messages are suppressed, and missing Stripe configuration throws on startup rather than logging a warning.

Database

VariableRequiredDescriptionExample
DATABASE_URLYesFull PostgreSQL connection stringHost=localhost;Port=5432;Database=acme;Username=acme;Password=secret
POSTGRES_DBYes (Docker)Database name (used by the postgres Docker container)acme
POSTGRES_USERYes (Docker)Database username (used by the postgres Docker container)acme
POSTGRES_PASSWORDYes (Docker)Database password (used by the postgres Docker container)supersecretpassword
DATABASE_URL is used by the .NET application. POSTGRES_DB, POSTGRES_USER, and POSTGRES_PASSWORD are used by the postgres Docker container to initialize the database. They should be consistent with each other.

Redis

VariableRequiredDescriptionExample
REDIS_URLYesRedis connection stringlocalhost:6379
REDIS_PASSWORDNoRedis password if authentication is enabledredispassword
For local development with the Docker Compose setup, use REDIS_URL=redis:6379 (the service name). For production, use your Redis host and port.

JWT

VariableRequiredDescriptionExample
JWT_PRIVATE_KEYYesBase64-encoded RSA private key (PEM format)LS0tLS1CRUdJTi…
JWT_PUBLIC_KEYYesBase64-encoded RSA public key (PEM format)LS0tLS1CRUdJTi…
JWT_ISSUERYesToken issuer claim (iss)https://api.yourdomain.com
JWT_AUDIENCEYesToken audience claim (aud)https://yourdomain.com
JWT_ACCESS_TOKEN_EXPIRY_MINUTESNoAccess token lifetime in minutes15 (default)
JWT_REFRESH_TOKEN_EXPIRY_DAYSNoRefresh token lifetime in days7 (default)
Both key variables must be base64-encoded PEM format with no line breaks. See JWT Key Generation for the exact commands.

Stripe

VariableRequiredDescriptionExample
STRIPE_SECRET_KEYYes*Stripe secret API keysk_test_51… or sk_live_51…
STRIPE_WEBHOOK_SECRETYes*Stripe webhook signing secretwhsec_…
STRIPE_PRO_PRICE_IDYes*Stripe Price ID for the Pro planprice_1ABC…
STRIPE_BUSINESS_PRICE_IDYes*Stripe Price ID for the Business planprice_1DEF…
*Required in Production. In Development, missing Stripe config logs a warning and the application starts; billing endpoints will return errors. Test keys start with sk_test_. Live keys start with sk_live_. Never use live keys in development.

Resend (email)

VariableRequiredDescriptionExample
RESEND_API_KEYYes*Resend API keyre_…
EMAIL_FROM_ADDRESSYes*Sending email addressnoreply@yourdomain.com
EMAIL_FROM_NAMENoDisplay name in From headerAcme
*Required in Production. In Development, missing Resend config logs a warning; email sending fails silently and the error is logged. For local development, you can use onboarding@resend.dev as EMAIL_FROM_ADDRESS without domain verification.

OAuth

VariableRequiredDescriptionExample
GOOGLE_CLIENT_IDNoGoogle OAuth 2.0 client ID123456789-abc…apps.googleusercontent.com
GOOGLE_CLIENT_SECRETNoGoogle OAuth 2.0 client secretGOCSPX-…
GITHUB_CLIENT_IDNoGitHub OAuth App client IDIv1.abc123…
GITHUB_CLIENT_SECRETNoGitHub OAuth App client secretabc123def456…
OAuth providers are optional. The application works without them — only the Google and GitHub login buttons on the login page will fail.

Application

VariableRequiredDescriptionExample
APP_URLYesFrontend application URLhttp://localhost:5173 or https://app.yourdomain.com
API_URLYesBackend API URLhttp://localhost:5000 or https://api.yourdomain.com
ENVIRONMENTYesDevelopment or ProductionDevelopment
ADMIN_EMAILNoOverrides the seeded admin emailadmin@yourdomain.com
ADMIN_PASSWORDNoOverrides the seeded admin passwordA strong password
APP_URL is used in email templates to build links (e.g., the email verification link, magic link). API_URL is the backend’s own base URL, used in OAuth callback construction.

Frontend

VariableRequiredDescriptionExample
VITE_API_URLYesBackend API URL, used by Vite and the React apphttp://localhost:5000 or https://api.yourdomain.com
Vite only exposes environment variables prefixed with VITE_ to the browser bundle. VITE_API_URL is the only frontend environment variable — everything else is server-side.