What problem does it solve? OrangeHRM stores application settings in the hs_hr_config key/value table, and developers need to know how to read, write, and seed these settings correctly without misusing the table for domain data or breaking migration re-runs. ## Core Features & Use Cases - Runtime access via ConfigService: Use ConfigServiceTrait with typed getters/setters and KEY_* constants instead of hardcoding string keys in services and controllers. - Migration-time access via ConfigHelper: Seed new config defaults inside migration up() methods with null-guards so re-runs never clobber operator customizations. - Decision guidance: Clear rules for when a setting belongs in hs_hr_config (feature flags, singletons, small JSON blobs) versus a proper entity (per-user settings, lists of records, queried values). - Use Case: When adding a new feature flag like widget.fancy_mode, follow the recipe to add the KEY_* constant and typed methods to ConfigService, seed the default in a migration, and read it from runtime code through ConfigServiceTrait. ## Quick Start Ask the assistant to add a new feature flag config key to OrangeHRM following the ConfigService and migration seeding conventions.