- Configuration data must not be stored in the repo. Instead, we have a configuration template in app/config. The template has the suffix json.dist.
- The deployment script checks if a config file exists and if it has the same key structure as the template file. If one of these conditions is not met, the deployment fails.
- We'll use JSON as a config format since it is easily parsed without external libraries and has a properly defined format and encoding.
- If the configuration values get too complex, we can use the Symfony Config component to validate.
I've done something with https://github.com/wmde/FundraisingFrontend/pull/20 now. Base config at config/config.dist.json. Application merge overrides with config/config.prod.json when present and the tests use config/config.test.json.