Centralise configuration so storage paths and credentials are never hard-coded.
## Scope
- Load from environment with documented defaults
- Required keys: `MESHVAULT_LIBRARY_DIR`, database host/port/name/user/password, app environment, log level
- Fail fast at boot with a clear message when a required key is missing
- Validate that the library directory exists and is writable
## Acceptance criteria
- [ ] `.env.example` documents every supported key
- [ ] Missing required config aborts startup with an actionable error
- [ ] Unwritable library directory is reported clearly at boot
---
Blocked by: #7, #1
keith
added this to the M1 - Docker & Dev Environment milestone 2026-10-10 22:18:18 +00:00
Acceptance reconciliation at c1ef2ee: .env.example, AppConfig and entrypoint validation implement documented configuration, defaults and startup checks. Historical M1 task3 runtime tests verified missing-config and unwritable-directory rejection as www-data. Fresh full suite and lint pass. Native PHP intentionally does not load .env; Compose injects values. Closing.
Acceptance reconciliation at c1ef2ee: .env.example, AppConfig and entrypoint validation implement documented configuration, defaults and startup checks. Historical M1 task3 runtime tests verified missing-config and unwritable-directory rejection as www-data. Fresh full suite and lint pass. Native PHP intentionally does not load .env; Compose injects values. Closing.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Centralise configuration so storage paths and credentials are never hard-coded.
Scope
MESHVAULT_LIBRARY_DIR, database host/port/name/user/password, app environment, log levelAcceptance criteria
.env.exampledocuments every supported keyBlocked by: #7, #1
Acceptance reconciliation at
c1ef2ee: .env.example, AppConfig and entrypoint validation implement documented configuration, defaults and startup checks. Historical M1 task3 runtime tests verified missing-config and unwritable-directory rejection as www-data. Fresh full suite and lint pass. Native PHP intentionally does not load .env; Compose injects values. Closing.