avexsoft/donkey

The smart-ass Laravel package to manage `config()` in production

Installs: 207

Dependents: 1

Suggesters: 0

Security: 0

Stars: 2

Watchers: 0

Forks: 0

Open Issues: 1

Type:laravel-library

pkg:composer/avexsoft/donkey

1.0.5 2025-12-18 02:31 UTC

This package is auto-updated.

Last update: 2025-12-20 02:52:30 UTC


README

Latest Version on Packagist Total Downloads Build Status StyleCI

Donkey is a Laravel package to modify your Laravel config() in code/any environment without giving access to the .env file.

Any key of the config can be modified like this

Donkey::set('app.debug', true); // config('app.debug') will return true until changed again

What problems does this solve?

  1. If you had to change a value in config() that is not exposed in .env, how do you do it? Does it have to go through the entire CI/CD pipeline before reaching production?

  2. If you had to enable Laravel's debug mode temporarily in production, how would you do it? Modify .env? Who will be editing it? Will they accidentally edit something else? And does that person have SSH access? Even if you trust them, do you really want the other API keys to show up on their screens?

  3. Perhaps our biggest pain point was coming up with the UI to expose configurable parts of our projects to the users, there just wasn't an elegant way to do it. Our companion Filament package lets you create a configuration page blazingly fast and in your own namespace

    Donkey::set('project.advanced_mode', true); // persists project.advanced_mode into the project
    config('project.advanced_mode'); // returns true
    
    // You can even give users their own configuration space
    Donkey::set(auth()->user()->id.'-user.advanced_mode', true);

How does it work?

  1. Donkey::set('app.debug', true) stores the key-value pair into the database
  2. You can blacklist keys using regular expression, e.g. app.*, database.*
  3. Next, a whilelist will let through keys like app.debug, this way, you prevent really sensitive keys like app.key from being overwritten
  4. The package then inject these pairs from the database into the project after going through the black and whitelist
  5. This approach plays nicely with the Laravel config:cache and requires no changes in your project

Installation

Via Composer

$ composer require avexsoft/donkey

Usage

Change log

Please see the changelog for more information on what has changed recently.

Testing

$ composer test

Contributing

Please see contributing.md for details and a todolist.

Security

If you discover any security related issues, please email author@email.com instead of using the issue tracker.

Credits

License

MIT. Please see the license file for more information.