In a standard Laravel application, configuration typically lives in static config/*.php files. Changing a setting usually means changing code and re-deploying.
But what if your admin users need to toggle 'Maintenance Mode' or change the 'Support Email' on the fly?
The Migration Fatigue
The alternative is often adding columns to a database table. Want a new 'Dark Mode' preference? Create a migration. Add a column. Update the model. It's slow and rigid.
The Dynamic Solution
Beartropy Settings acts as a strongly-typed key-value store that lives in your database but acts like a config file.
Because the package stores the type of the setting (string, boolean, integer, etc.), you get back exactly what you stored, not just a string representation.
Usage Example
Storing a value is intuitive. You don't need to worry about serialization:
1// Storing a boolean
2settings()->set('site.registration_open', true);
3
4// Storing an array (automatically json_encoded)
5settings()->set('site.social_links', ['twitter' => '@beartropy', 'github' => 'beartropy']);
Retrieving it is just as easy, and the types are preserved:
1if (settings('site.registration_open')) {
2 // This evaluates as a real boolean, not string "1" or "true"
3 return view('auth.register');
4}
Cache Friendly
Database queries for settings can hurt performance. Beartropy Settings automatically caches your configuration, ensuring that subsequent calls to settings() have zero database impact until a value is updated.
Give your application the flexibility it deserves without the deployment headaches.