One recommendation: default values for config
We should add default values to the Config part. Something along this line:
Configuration values when not explicitly specified in the environment variables should point to their default values, which should run the application under a local/test environment. If application requires backing services to operate (such as a database), then the default values should point to the backing resources running on the same host machine. For example, if application requires PostgreSQL, then if the PostgreSQL host is not specified in the environment variable, it should point to localhost:5432.
Configuration that do not have default values, such as credentials, should be left unspecified, and application should behave accordingly when those values are left blank (e.g. hard fail if credentials are missing).
Default values can be specified in a separate configuration file but treated as constants, overridable only by environment variables.