Skip to main content

Configuration

These are all environment variables that can be used to configure the application.

Environment variables

Variable NameServicesDefault ValueDescription
SPRING_DATASOURCE_URLserverjdbc:postgresql://localhost:5444/thesis-managementPostgres connection url
SPRING_DATASOURCE_USERNAMEserverthesis-management-postgresPostgres username
SPRING_DATASOURCE_PASSWORDserverthesis-management-postgresPostgres password
POSTGRES_IMAGE_TAGdocker compose18.4-alpinePostgreSQL Docker image tag used by the compose files. Non-secret; optional (defaults to the bundled tag). See Database & Liquibase.
KEYCLOAK_HOSTserver, clienthttp://localhost:8181Keycloak hostname
KEYCLOAK_REALM_NAMEserver, clientthesis-managementKeycloak realm name
KEYCLOAK_CLIENT_IDserver, clientthesis-management-appKeycloak client id
PASSKEY_RP_IDclientwindow.location.hostnameWebAuthn relying party ID used for passkey registration/login. Must match Keycloak's WebAuthn Passwordless RP ID. Use a hostname only, without protocol or port.
PASSKEY_RP_NAMEclientTUM AETWebAuthn relying party display name shown by the browser during passkey registration.
PASSKEY_PROMPT_APPSclientComma-separated app names shown as badges in the passkey registration prompt. Leave empty unless those apps share the same passkey setup.
KEYCLOAK_SERVICE_CLIENT_IDserverKeycloak service client id
KEYCLOAK_SERVICE_CLIENT_SECRETserverKeycloak service client secret
POSTFIX_HOSTserverlocalhostPostfix host to send emails. Only required if emails are enabled.
POSTFIX_PORTserver25Postfix port
POSTFIX_USERNAMEserverPostfix username
POSTFIX_PASSWORDserverPostfix password
CLIENT_HOSTserver, clienthttp://localhost:3100Hosting url of client
SERVER_HOSTclienthttp://localhost:8180Hosting url of server
MAIL_ENABLEDserverfalseIf set to true, the application will try to send emails via Postfix
MAIL_SENDERservertest@ios.ase.cit.tum.deSender email address
UPLOAD_FOLDERserveruploadsFolder where uploaded files will be stored
APPLICATION_TITLEclientThesis ManagementHTML title of the client
GENDERSclient{"MALE":"Male","FEMALE":"Female","OTHER":"Other","PREFER_NOT_TO_SAY":"Prefer not to say"}Available genders that a user can configure
STUDY_DEGREESclient{"BACHELOR":"Bachelor","MASTER":"Master"}Available study degrees
STUDY_PROGRAMSclient{"COMPUTER_SCIENCE":"Computer Science","INFORMATION_SYSTEMS":"Information Systems","GAMES_ENGINEERING":"Games Engineering","MANAGEMENT_AND_TECHNOLOGY":"Management and Technology","OTHER":"Other"}Available study programs
THESIS_TYPESclient{"BACHELOR":{"long":"Bachelor Thesis","short":"BA"},"MASTER":{"long":"Master Thesis","short":"MA"},"INTERDISCIPLINARY_PROJECT":{"long":"Interdisciplinary Project","short":"IDP"},"GUIDED_RESEARCH":{"long":"Guided Research","short":"GR"}}Available thesis types
LANGUAGESclient{"ENGLISH":"English","GERMAN":"German"}Available languages for presentations
CUSTOM_DATAclient{"GITHUB":{"label":"Github Profile","required":false}}Additional data the user can add to the profile
THESIS_FILESclient{"PRESENTATION":{"label":"Presentation","description":"Presentation (PDF)","accept":"pdf","required":true},"PRESENTATION_SOURCE":{"label":"Presentation Source","description":"Presentation Source (KEY, PPTX)","accept":"any","required":false},"FEEDBACK_LOG":{"label":"Feedback Log","description":"Feedback Log (PDF)","accept":"pdf","required":false}}Additional files the student can add to the thesis
DATA_RETENTION_CRONserver0 0 4 * * *Cron expression for the nightly data retention cleanup job. Set to - to disable.
REJECTED_APP_RETENTION_DAYSserver365Number of days to retain rejected applications before automatic deletion.
DATA_EXPORT_PATHserverdata-exportsDirectory where data export ZIP files are stored. Should be backed up if persistent exports are needed.
DATA_EXPORT_RETENTION_DAYSserver7Number of days to keep data export files before automatic deletion.
DATA_EXPORT_COOLDOWN_DAYSserver7Minimum number of days between data export requests per user.
INACTIVE_USER_DAYSserver365Number of days of inactivity after which student accounts are automatically disabled.
LIQUIBASE_CONTEXTSserverprodComma-separated list of Liquibase contexts to execute on startup. Must be prod (or unset) in production — the value dev activates the 23_seed_dev_test_data.xml changelog, which seeds fake users, topics, applications, and theses, and application-dev.yml already sets this to dev for the dev profile. Never set this to dev (or include dev) on a production deployment.
CHAIR_NAMEclientThesis ManagementChair name
CHAIR_URLclientwindow.originURL to chair website
AI_FEATURES_ENABLEDserverfalseMaster switch for the AI feedback module (/v2/ai-review/**, ReviewService, PdfService). Work in progress — not yet fully integrated or guaranteed to work. Leave at false in production. When true, also set OPENAI_API_KEY / OPENAI_BASE_URL / OPENAI_CHAT_MODEL to point at a reachable LLM endpoint. Enabled by default in application-dev.yml for local development.
OPENAI_API_KEYserverAPI key used by Spring AI's OpenAI client. Only consulted when AI_FEATURES_ENABLED=true; the prod default placeholder exists only so the OpenAI auto-configuration can construct its bean.
OPENAI_BASE_URLserverhttps://gpu.aet.cit.tum.de/apiBase URL of the OpenAI-compatible endpoint used by the AI feedback module.
OPENAI_CHAT_MODELservergoogle/gemma-4-26B-A4B-itChat model name passed to the OpenAI-compatible endpoint.