Coder Social home page Coder Social logo

buggregator / laravel-app Goto Github PK

View Code? Open in Web Editor NEW
325.0 6.0 24.0 66.52 MB

The old version of Buggregator, which uses Laravel framework, is no longer being actively developed. The new beta version, built with Spiral framework, is now available at https://github.com/buggregator/spiral-app and offers significant improvements in performance and stability, as well as a lighter docker image size of around 300mb.

Home Page: https://buggregator.dev

License: MIT License

Shell 0.56% PHP 65.43% Vue 31.16% Blade 2.31% Dockerfile 0.52% Batchfile 0.02%
php ray swoole laravel docker octane websocket monolog sentry smtp-server

laravel-app's Introduction

Hello dear developer!

The old version of Buggregator, which uses Laravel framework, is no longer being actively developed. The new beta version, built with Spiral framework, is now available at https://github.com/buggregator/spiral-app and offers significant improvements in performance and stability, as well as a lighter docker image size of around 300mb. It also includes xhprof support for profiling PHP applications. Developers are encouraged to switch to the new version for the best debugging experience.

Stay tuned for the upcoming stable release!


A server for debugging PHP applications and more.

Support me on Patreon StyleCI build Downloads Twitter Join to our telegram

Frame 2

Buggregator is a beautiful, lightweight standalone server built on Laravel, VueJs and RoadRunner underhood, that helps debugging mostly PHP applications without extra packages. It runs without installation on multiple platforms via docker and supports symfony var-dumper, monolog, sentry, smtp, inspector and spatie ray package.

Contents

  1. Features
  2. Installation
  3. Configuration
  4. Contributing
  5. License

Buggregator

1. Symfony VarDumper server

The dump() and dd() functions output its contents in the same browser window or console terminal as your own application. Sometimes mixing the real output with the debug output can be confusing. That’s why this Buggregator can be used to collect all the dumped data. Buggregator can display dump output in the browser as well as in a terminal (console output).

Installation

composer require --dev symfony/var-dumper

Settings

Env variables

// Laravel
VAR_DUMPER_FORMAT=server
VAR_DUMPER_SERVER=127.0.0.1:9912

// Plain PHP
$_SERVER['VAR_DUMPER_FORMAT'] = 'server';
$_SERVER['VAR_DUMPER_SERVER'] = '127.0.0.1:9912';

2. Fake SMTP server for catching mail

Buggregator also is an email testing tool that makes it super easy to install and configure a local email server (Like MailHog). Buggregator sets up a fake SMTP server and you can configure your preferred web applications to use Buggregator’s SMTP server to send and receive emails. For instance, you can configure a local WordPress site to use Buggregator for email deliveries.

Settings

Env variables

// Laravel
MAIL_MAILER=smtp
MAIL_HOST=127.0.0.1
MAIL_PORT=1025

// Symfony
MAILER_DSN=smtp://127.0.0.1:1025

3. Compatible with Sentry reports

Buggregator can be used to receive Sentry reports from your application. Buggregator is a lightweight alternative for local development. Just configure Sentry DSN to send data to Buggregator. It can display dump output in the browser as well as in a terminal (console output).

Laravel settings

Laravel is supported via a native package. You can read about integrations on official site

// DSN for the Buggregator
SENTRY_LARAVEL_DSN=http://[email protected]:23517/1

Other platforms

To report to Buggregator you’ll need to use a language-specific SDK. The Sentry team builds and maintains these for most popular languages. You can find out documentation on official site


4. Monolog server

Buggregator can display dump output in the browser as well as in a terminal (console output). Buggregator can receive logs from monolog/monolog package via \Monolog\Handler\SlackWebhookHandler or \Monolog\Handler\SocketHandler handler.

Laravel settings for SlackWebhookHandler

Env variables

LOG_CHANNEL=slack
LOG_SLACK_WEBHOOK_URL=http://127.0.0.1:23517/slack

Laravel settings for SocketHandler

Config

// config/logging.php
return [
    // ...
    'channels' => [
        // ...
        'socket' => [
            'driver' => 'monolog',
            'level' => env('LOG_LEVEL', 'debug'),
            'handler' => \Monolog\Handler\SocketHandler::class,
            'formatter' => \Monolog\Formatter\JsonFormatter::class,
            'handler_with' => [
                'connectionString' => env('LOG_SOCKET_URL', '127.0.0.1:9913'),
            ],
        ],
    ],
];

Env variables

LOG_CHANNEL=socket
LOG_SOCKET_URL=127.0.0.1:9913

Other PHP frameworks

Install monolog composer require monolog/monolog

<?php

use Monolog\Logger;
use Monolog\Handler\SocketHandler;
use Monolog\Formatter\JsonFormatter;

// create a log channel
$log = new Logger('buggregator');
$handler = new SocketHandler('127.0.0.1:9913');
$handler->setFormatter(new JsonFormatter());
$log->pushHandler($handler);

// Send records to the Buggregator
$log->warning('Foo');
$log->error('Bar');

5. Compatible with Inspector reports

Buggregator can be used to receive Inspector events from your application. Buggregator is a lightweight alternative for local development. Just configure Inspector client URL to send data to Buggregator. It can display dump output in the browser as well as in a terminal (console output).

Laravel settings

Laravel is supported via a native package. You can read about integrations on official site

INSPECTOR_URL=http://127.0.0.1:23517/inspector
INSPECTOR_API_KEY=test
INSPECTOR_INGESTION_KEY=1test
INSPECTOR_ENABLE=true

Other platforms

For PHP you can use inspector-apm/inspector-php package.

use Inspector\Inspector;
use Inspector\Configuration;

$configuration = new Configuration('YOUR_INGESTION_KEY');
$configuration->setUrl('http://127.0.0.1:23517/inspector');
$inspector = new Inspector($configuration);

// ...

To report to Buggregator you’ll need to use a language-specific SDK. The Inspector team builds and maintains these for most popular languages. You can find out documentation on official site


6. Spatie Ray debug tool

Buggregator is compatible with spatie/ray package. The Ray debug tool supports PHP, Ruby, JavaScript, TypeScript, NodeJS, Go and Bash applications. After installing one of the libraries, you can use the ray function to quickly dump stuff. Any variable(s) that you pass will be sent to the Buggregator. Buggregator can display dump output in the browser as well as in a terminal (console output).

Supported features: Simple data, Colors, Sizes, Labels, New screen, Clear all, Caller, Trace, Pause, Counter, Class name of an object, Measure, Json, Xml, Carbon, File, Table, Image, Html, Text, Notifications, Phpinfo, Exception, Show queries, Count queries, Show events, Show jobs, Show cache, Model, Show views, Markdown, Collections, Env, Response, Request, Ban, Charles, Remove, Hide/Show events, Application log, Show Http client requests, Mailable

7. HTTP Requests dump server

Buggregator can receive HTTP requests and store them for inspection.

Laravel settings

Please make sure ray.php config published to the project root.

You can run an artisan command to publish it in to the project root.

php artisan ray:publish-config

Env variables

RAY_HOST=127.0.0.1  # Ray server host
RAY_PORT=23517      # Ray server port

Framework agnostic PHP

In framework agnostic projects you can use this template as the ray config file.

<?php
// Save this in a file called "ray.php"

return [
    /*
    * This settings controls whether data should be sent to Ray.
    */
    'enable' => true,
    
    /*
     *  The host used to communicate with the Ray app.
     */
    'host' => '127.0.0.1',

    /*
     *  The port number used to communicate with the Ray app. 
     */
    'port' => 23517,
    
    /*
     *  Absolute base path for your sites or projects in Homestead, Vagrant, Docker, or another remote development server.
     */
    'remote_path' => null,
    
    /*
     *  Absolute base path for your sites or projects on your local computer where your IDE or code editor is running on. 
     */
    'local_path' => null,
    
    /*
     * When this setting is enabled, the package will not try to format values sent to Ray.
     */
    'always_send_raw_values' => false,
];

You can find out more information about installation and configuration on official site

UI

Buggregator has a responsive design and a mobile device can be used as an additional screen for viewing event history. Also you can use a termial to collect dump output if you don't want to use a browser.

Buggregator devices


Technological stack

Installation

Docker image

You can run Buggregator via docker from Docker Hub or using the provided Dockerfile

Just run one of bash command

Latest stable release

docker run --pull always -p 23517:8000 -p 1025:1025 -p 9912:9912 -p 9913:9913 butschster/buggregator:latest

Latest beta release

docker run --pull always -p 23517:8000 -p 1025:1025 -p 9912:9912 -p 9913:9913 butschster/buggregator:beta

You can omit --pull always argument if your docker-compose doesn't support it.

Specific version

docker run -p 23517:8000 -p 1025:1025 -p 9912:9912 -p 9913:9913 butschster/buggregator:v1.18

You can omit unused ports if you use, for example, only var-dumper

docker run --pull always -p 9912:9912 butschster/buggregator:latest

Using buggregator with docker compose

// docker-compose.yml
version: "2"
services:
    ...

    buggregator:
        image: butschster/buggregator:latest
        ports:
        - 23517:8000
        - 1025:1025
        - 9912:9912
        - 9913:9913

Authentication

By default Buggregator doesn't use any authentication, but you can enable it via ENV variables.

AUTH_ENABLED=true
AUTH_USERNAME=admin
AUTH_PASSWORD=secret

Example

docker run --pull always --env AUTH_ENABLED=true --env AUTH_USERNAME=admin --env AUTH_PASSWORD=secret -p 23517:8000 -p 1025:1025 -p 9912:9912 -p 9913:9913 butschster/buggregator:latest

or

// docker-compose.yml
version: "2"
services:
    ...

    buggregator:
        image: butschster/buggregator:latest
        ports:
        - 23517:8000
        - 1025:1025
        - 9912:9912
        - 9913:9913
        environment:
            AUTH_ENABLED: false
            AUTH_USERNAME: admin
            AUTH_PASSWORD: secret

If you don't want to see dump output in your terminal, you can disable it through ENV variables

CLI_SMTP_STREAM=false
CLI_VAR_DUMPER_STREAM=false
CLI_SENTRY_STREAM=false
CLI_RAY_STREAM=false
CLI_MONOLOG_STREAM=false

Example

docker run --pull always --env CLI_SMTP_STREAM=false --env CLI_SENTRY_STREAM=false -p 23517:8000 -p 1025:1025 -p 9912:9912 -p 9913:9913 butschster/buggregator:latest

or

// docker-compose.yml
version: "2"
services:
    ...

    buggregator:
        image: butschster/buggregator:latest
        ports:
        - 23517:8000
        - 1025:1025
        - 9912:9912
        - 9913:9913
        environment:
            CLI_SMTP_STREAM: false
            CLI_RAY_STREAM: false

That's it. Now you open http://127.0.0.1:23517 url in your browser or open terminal and collect dump output from your application.

Enjoy!


Contributing

There are several projects in this repo with unresolved issues and it would be great if you help a community solving them.

Backend part

Server requirements

  1. PHP 8.0

Installation

  1. Clone repository git clone https://github.com/buggregator/app.git
  2. Run composer composer install
  3. Run migrations php artisan app:configure
  4. Download RoadRunner binary vendor/bin/rr get-binary
  5. Run RoadRunner server ./rr serve

Frontend part

Server requirements

  1. NodeJS
  2. IntertiaJS
  3. TailwindCSS

Installation

  1. Run npm npm i
  2. Build npm npm run watch - for development
  3. Build npm npm run prod - for production

Code samples

Code samples of configured Laravel application ready to send data to Buggregator you can find here.

Articles


License

Buggregator is open-sourced software licensed under the MIT license.

laravel-app's People

Contributors

anastasiaart avatar butschster avatar chorry avatar hazyalex avatar js361014 avatar meekstellar avatar roxblnfk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

laravel-app's Issues

No events receiving

Any ideas?
I powered up the docker containers as you specified
I installed vardumper and ray in my laravel application
in the controller I do
dd('hello'); ray('hiya');
But when I navigate to http://localhost:23517/
It keeps spinning "Hurry! Give me something. I can't wait to show it."
So I guess no events are coming in

Any ideas

Clear screen button clears all the screens, not only the current one

Hi

The Clear Screen button from the top-right corner it clears all the screens info.
I was expecting that this button will clear the info from the current screen and leave all other screens untouched.
This is useful when you debug 2 environments and each environment has its screen.

Thanks
galiganu

Monolog TCP handler works wrong

When we send monolog logs to the buggregator, it doesn't close connection after receiving logs and they don't display in GUI

Console mode

Add ability to switch default UI to console mode. https://xtermjs.org/

$output = new WebsocketOutput($this->output);

use Symfony\Component\Console\Output\Output;
use Symfony\Component\Console\Output\OutputInterface;

class BrowserOutput extends Output
{
    public function __construct(private OutputInterface $output)
    {
        parent::__construct();
    }

    public function write($messages, bool $newline = false, int $options = self::OUTPUT_NORMAL)
    {
        $this->output->write($messages, $newline, $options);
        parent::write($messages, $newline, $options);
    }

    protected function doWrite(string $message, bool $newline)
    {
        dump('broadcast');
    }
}

Icon for a button for terminal
https://seekicon.com/free-icon/terminal_9

New Items [feature-request]

Really great work, I am just starting to use it to see how this will speed up my debug sessions.

When I have my exceptions shown and my smtp not shown and a new mail it caught it would be cool to show an icon in the smtp tag that there are new items)

how to start without docker?

i have this error when opening the page

Warning: Unknown: Failed to open stream: No such file or directory in Unknown on line 0

Fatal error: Failed opening required '/Volumes/MacData/work/buggregator/server.php' (include_path='.:/usr/local/Cellar/php/8.0.12/share/php/pear') in Unknown on line 0

mail server seems to cache emails and is not refreshing

hi, I have found some strange behavior.

I am using buggregator as a smtp server, but it keeps showing the same email message over and over.

not sure if it caches it somehow or is not refreshing or something...

cheers, dan

Labels for screens

Hi

Is it possible to have the screen label in the selector itself, instead just the blue circle?
If many screens are opened it is hard to know which one is which.

Also, is it possible not to automatically change the active screen when a message is received.
If I am currently reviewing a message and new one is received in another screen, I am automatically moved to the new screen.
Instead of automatically change the active screen, maybe just highlight the screen button on the screen selector on the top.

Thanks
galiganu

Error on long data dump

v2.0.0-beta1

[previous exception] [object] (PDOException(code: 22001): SQLSTATE[22001]: String data, right truncated: 1406 Data too long for column 'payload' at row 1 at /app/vendor/cycle/database/src/Driver/Driver.php:443)

I think it possible to use blob cell for very long data.

Issues with SQL Database locked

I've been playing with Buggregator recently via Docker, but keep hitting this error:

[2022-03-10 14:24:02] production.ERROR: SQLSTATE[HY000]: General error: 5 database is locked {"exception":"[object] (Cycle\\Database\\Exception\\StatementException(code: 0): SQLSTATE[HY000]: General error: 5 database is locked at /app/vendor/cycle/database/src/Driver/SQLite/SQLiteDriver.php:39)

I'm primarily using the v2.0.0-beta Docker image on an M1 Mac, both from DockerHub (using Rosetta to run the x86 image on ARM), and building it locally (ARM on ARM).

After starting the server and sending a larger amount of data, I get the following:

➜  MoodleRay git:(main) ✗ docker logs ray
SQLite database file [/app/database/database.sqlite] is created.
Migrate 0_default_create_events
Migrate 0_default_create_users
Migrate 0_default_create_stored_events
Authentication is disabled.
[INFO] RoadRunner server started; version: 2.6.3, buildtime: 2021-12-03T11:37:00+0000
[2022-03-10 14:26:25] production.ERROR: Cycle\Database\Driver\Driver::getPDO(): Return value must be of type PDO, null returned {"exception":"[object] (Cycle\\Database\\Exception\\StatementException(code: 0): Cycle\\Database\\Driver\\Driver::getPDO(): Return value must be of type PDO, null returned at /app/vendor/cycle/database/src/Driver/SQLite/SQLiteDriver.php:39)
[stacktrace]
#0 /app/vendor/cycle/database/src/Driver/Driver.php(322): Cycle\\Database\\Driver\\SQLite\\SQLiteDriver->mapException(Object(TypeError), 'BEGIN TRANSACTI...')
#1 /app/vendor/cycle/orm/src/Transaction/Runner.php(159): Cycle\\Database\\Driver\\Driver->beginTransaction()
#2 /app/vendor/cycle/orm/src/Transaction/Runner.php(58): Cycle\\ORM\\Transaction\\Runner->prepareTransaction(Object(Infrastructure\\CycleOrm\\Database\\Drivers\\SQLiteDriver))
#3 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(152): Cycle\\ORM\\Transaction\\Runner->run(Object(Cycle\\ORM\\Command\\Database\\Insert))
#4 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(372): Cycle\\ORM\\Transaction\\UnitOfWork->runCommand(Object(Cycle\\ORM\\Command\\Database\\Insert))
#5 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(424): Cycle\\ORM\\Transaction\\UnitOfWork->resolveSelfWithEmbedded(Object(Cycle\\ORM\\Transaction\\Tuple), Object(Cycle\\ORM\\RelationMap), false)
#6 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(233): Cycle\\ORM\\Transaction\\UnitOfWork->resolveRelations(Object(Cycle\\ORM\\Transaction\\Tuple))
#7 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(99): Cycle\\ORM\\Transaction\\UnitOfWork->walkPool()
#8 /app/vendor/cycle/orm/src/EntityManager.php(47): Cycle\\ORM\\Transaction\\UnitOfWork->run()
#9 /app/app/Modules/Events/Application/Commands/StoreEvent/Handler.php(36): Cycle\\ORM\\EntityManager->run()
#10 /app/app/Modules/Events/Application/Commands/StoreEvent/Handler.php(47): Modules\\Events\\Application\\Commands\\StoreEvent\\Handler->handle(Object(Modules\\Events\\Application\\Commands\\StoreEvent\\Command))
#11 /app/vendor/symfony/messenger/Middleware/HandleMessageMiddleware.php(96): Modules\\Events\\Application\\Commands\\StoreEvent\\Handler->__invoke(Object(App\\Commands\\HandleReceivedEvent))
#12 /app/vendor/symfony/messenger/MessageBus.php(77): Symfony\\Component\\Messenger\\Middleware\\HandleMessageMiddleware->handle(Object(Symfony\\Component\\Messenger\\Envelope), Object(Symfony\\Component\\Messenger\\Middleware\\StackMiddleware))
#13 /app/app/Infrastructure/Bus/Command/MessengerCommandBus.php(31): Symfony\\Component\\Messenger\\MessageBus->dispatch(Object(App\\Commands\\HandleReceivedEvent))
#14 /app/app/Modules/Ray/Interfaces/Http/Controllers/StoreEventAction.php(41): Infrastructure\\Bus\\Command\\MessengerCommandBus->dispatch(Object(App\\Commands\\HandleReceivedEvent))
#15 /app/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): Modules\\Ray\\Interfaces\\Http\\Controllers\\StoreEventAction->__invoke(Object(Illuminate\\Http\\Request), Object(Infrastructure\\Bus\\Command\\MessengerCommandBus), Object(Illuminate\\Cache\\Repository), Object(Modules\\Ray\\EventHandler), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#16 /app/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('__invoke', Array)
#17 /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(262): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(Modules\\Ray\\Interfaces\\Http\\Controllers\\StoreEventAction), '__invoke')
#18 /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\\Routing\\Route->runController()
#19 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(695): Illuminate\\Routing\\Route->run()
#20 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#21 /app/vendor/inertiajs/inertia-laravel/src/Middleware.php(82): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#22 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Inertia\\Middleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#23 /app/app/Interfaces/Http/Middleware/ShareInertiaData.php(30): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#24 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Interfaces\\Http\\Middleware\\ShareInertiaData->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#25 /app/app/Interfaces/Http/Middleware/SubstituteUuids.php(34): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#26 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Interfaces\\Http\\Middleware\\SubstituteUuids->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#27 /app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#28 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#29 /app/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#30 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#31 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#32 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\AuthenticateSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#33 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#34 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest(Object(Illuminate\\Http\\Request), Object(Illuminate\\Session\\Store), Object(Closure))
#35 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#36 /app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#37 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#38 /app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#39 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#40 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#41 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(697): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#42 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(672): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#43 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(636): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#44 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(625): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#45 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#46 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#47 /app/vendor/spiral/roadrunner-laravel/src/Dumper/Middleware.php(45): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#48 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Spiral\\RoadRunnerLaravel\\Dumper\\Middleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#49 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#50 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#51 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#52 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#53 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#54 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#55 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#56 /app/vendor/fruitcake/laravel-cors/src/HandleCors.php(38): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#57 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fruitcake\\Cors\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#58 /app/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#59 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#60 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#61 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#62 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#63 /app/vendor/spiral/roadrunner-laravel/src/Worker.php(113): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#64 /app/vendor/spiral/roadrunner-laravel/src/Console/Commands/StartCommand.php(112): Spiral\\RoadRunnerLaravel\\Worker->start(Object(Spiral\\RoadRunnerLaravel\\WorkerOptions))
#65 /app/vendor/symfony/console/Command/Command.php(298): Spiral\\RoadRunnerLaravel\\Console\\Commands\\StartCommand->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
#66 /app/vendor/symfony/console/Application.php(1005): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
#67 /app/vendor/symfony/console/Application.php(299): Symfony\\Component\\Console\\Application->doRunCommand(Object(Spiral\\RoadRunnerLaravel\\Console\\Commands\\StartCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
#68 /app/vendor/symfony/console/Application.php(171): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
#69 /app/bin/rr-worker(74): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
#70 {main}

[previous exception] [object] (TypeError(code: 0): Cycle\\Database\\Driver\\Driver::getPDO(): Return value must be of type PDO, null returned at /app/vendor/cycle/database/src/Driver/Driver.php:662)
[stacktrace]
#0 /app/vendor/cycle/database/src/Driver/Driver.php(320): Cycle\\Database\\Driver\\Driver->getPDO()
#1 /app/vendor/cycle/orm/src/Transaction/Runner.php(159): Cycle\\Database\\Driver\\Driver->beginTransaction()
#2 /app/vendor/cycle/orm/src/Transaction/Runner.php(58): Cycle\\ORM\\Transaction\\Runner->prepareTransaction(Object(Infrastructure\\CycleOrm\\Database\\Drivers\\SQLiteDriver))
#3 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(152): Cycle\\ORM\\Transaction\\Runner->run(Object(Cycle\\ORM\\Command\\Database\\Insert))
#4 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(372): Cycle\\ORM\\Transaction\\UnitOfWork->runCommand(Object(Cycle\\ORM\\Command\\Database\\Insert))
#5 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(424): Cycle\\ORM\\Transaction\\UnitOfWork->resolveSelfWithEmbedded(Object(Cycle\\ORM\\Transaction\\Tuple), Object(Cycle\\ORM\\RelationMap), false)
#6 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(233): Cycle\\ORM\\Transaction\\UnitOfWork->resolveRelations(Object(Cycle\\ORM\\Transaction\\Tuple))
#7 /app/vendor/cycle/orm/src/Transaction/UnitOfWork.php(99): Cycle\\ORM\\Transaction\\UnitOfWork->walkPool()
#8 /app/vendor/cycle/orm/src/EntityManager.php(47): Cycle\\ORM\\Transaction\\UnitOfWork->run()
#9 /app/app/Modules/Events/Application/Commands/StoreEvent/Handler.php(36): Cycle\\ORM\\EntityManager->run()
#10 /app/app/Modules/Events/Application/Commands/StoreEvent/Handler.php(47): Modules\\Events\\Application\\Commands\\StoreEvent\\Handler->handle(Object(Modules\\Events\\Application\\Commands\\StoreEvent\\Command))
#11 /app/vendor/symfony/messenger/Middleware/HandleMessageMiddleware.php(96): Modules\\Events\\Application\\Commands\\StoreEvent\\Handler->__invoke(Object(App\\Commands\\HandleReceivedEvent))
#12 /app/vendor/symfony/messenger/MessageBus.php(77): Symfony\\Component\\Messenger\\Middleware\\HandleMessageMiddleware->handle(Object(Symfony\\Component\\Messenger\\Envelope), Object(Symfony\\Component\\Messenger\\Middleware\\StackMiddleware))
#13 /app/app/Infrastructure/Bus/Command/MessengerCommandBus.php(31): Symfony\\Component\\Messenger\\MessageBus->dispatch(Object(App\\Commands\\HandleReceivedEvent))
#14 /app/app/Modules/Ray/Interfaces/Http/Controllers/StoreEventAction.php(41): Infrastructure\\Bus\\Command\\MessengerCommandBus->dispatch(Object(App\\Commands\\HandleReceivedEvent))
#15 /app/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(54): Modules\\Ray\\Interfaces\\Http\\Controllers\\StoreEventAction->__invoke(Object(Illuminate\\Http\\Request), Object(Infrastructure\\Bus\\Command\\MessengerCommandBus), Object(Illuminate\\Cache\\Repository), Object(Modules\\Ray\\EventHandler), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
#16 /app/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(45): Illuminate\\Routing\\Controller->callAction('__invoke', Array)
#17 /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(262): Illuminate\\Routing\\ControllerDispatcher->dispatch(Object(Illuminate\\Routing\\Route), Object(Modules\\Ray\\Interfaces\\Http\\Controllers\\StoreEventAction), '__invoke')
#18 /app/vendor/laravel/framework/src/Illuminate/Routing/Route.php(205): Illuminate\\Routing\\Route->runController()
#19 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(695): Illuminate\\Routing\\Route->run()
#20 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Routing\\Router->Illuminate\\Routing\\{closure}(Object(Illuminate\\Http\\Request))
#21 /app/vendor/inertiajs/inertia-laravel/src/Middleware.php(82): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#22 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Inertia\\Middleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#23 /app/app/Interfaces/Http/Middleware/ShareInertiaData.php(30): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#24 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Interfaces\\Http\\Middleware\\ShareInertiaData->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#25 /app/app/Interfaces/Http/Middleware/SubstituteUuids.php(34): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#26 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Interfaces\\Http\\Middleware\\SubstituteUuids->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#27 /app/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(50): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#28 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Routing\\Middleware\\SubstituteBindings->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#29 /app/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#30 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\View\\Middleware\\ShareErrorsFromSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#31 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/AuthenticateSession.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#32 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\AuthenticateSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#33 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(121): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#34 /app/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\\Session\\Middleware\\StartSession->handleStatefulRequest(Object(Illuminate\\Http\\Request), Object(Illuminate\\Session\\Store), Object(Closure))
#35 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Session\\Middleware\\StartSession->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#36 /app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#37 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\AddQueuedCookiesToResponse->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#38 /app/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(67): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#39 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Cookie\\Middleware\\EncryptCookies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#40 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#41 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(697): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#42 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(672): Illuminate\\Routing\\Router->runRouteWithinStack(Object(Illuminate\\Routing\\Route), Object(Illuminate\\Http\\Request))
#43 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(636): Illuminate\\Routing\\Router->runRoute(Object(Illuminate\\Http\\Request), Object(Illuminate\\Routing\\Route))
#44 /app/vendor/laravel/framework/src/Illuminate/Routing/Router.php(625): Illuminate\\Routing\\Router->dispatchToRoute(Object(Illuminate\\Http\\Request))
#45 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(167): Illuminate\\Routing\\Router->dispatch(Object(Illuminate\\Http\\Request))
#46 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Foundation\\Http\\Kernel->Illuminate\\Foundation\\Http\\{closure}(Object(Illuminate\\Http\\Request))
#47 /app/vendor/spiral/roadrunner-laravel/src/Dumper/Middleware.php(45): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#48 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Spiral\\RoadRunnerLaravel\\Dumper\\Middleware->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#49 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(21): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#50 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ConvertEmptyStringsToNull.php(31): Illuminate\\Foundation\\Http\\Middleware\\TransformsRequest->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#51 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ConvertEmptyStringsToNull->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#52 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#53 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\ValidatePostSize->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#54 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/PreventRequestsDuringMaintenance.php(86): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#55 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Foundation\\Http\\Middleware\\PreventRequestsDuringMaintenance->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#56 /app/vendor/fruitcake/laravel-cors/src/HandleCors.php(38): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#57 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Fruitcake\\Cors\\HandleCors->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#58 /app/vendor/laravel/framework/src/Illuminate/Http/Middleware/TrustProxies.php(39): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#59 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(167): Illuminate\\Http\\Middleware\\TrustProxies->handle(Object(Illuminate\\Http\\Request), Object(Closure))
#60 /app/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}(Object(Illuminate\\Http\\Request))
#61 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(142): Illuminate\\Pipeline\\Pipeline->then(Object(Closure))
#62 /app/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(111): Illuminate\\Foundation\\Http\\Kernel->sendRequestThroughRouter(Object(Illuminate\\Http\\Request))
#63 /app/vendor/spiral/roadrunner-laravel/src/Worker.php(113): Illuminate\\Foundation\\Http\\Kernel->handle(Object(Illuminate\\Http\\Request))
#64 /app/vendor/spiral/roadrunner-laravel/src/Console/Commands/StartCommand.php(112): Spiral\\RoadRunnerLaravel\\Worker->start(Object(Spiral\\RoadRunnerLaravel\\WorkerOptions))
#65 /app/vendor/symfony/console/Command/Command.php(298): Spiral\\RoadRunnerLaravel\\Console\\Commands\\StartCommand->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
#66 /app/vendor/symfony/console/Application.php(1005): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
#67 /app/vendor/symfony/console/Application.php(299): Symfony\\Component\\Console\\Application->doRunCommand(Object(Spiral\\RoadRunnerLaravel\\Console\\Commands\\StartCommand), Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
#68 /app/vendor/symfony/console/Application.php(171): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
#69 /app/bin/rr-worker(74): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\StreamOutput))
#70 {main}
"}
+---------+------------------------------------------------------+
|  date   |  Thu, 10 Mar 2022 14:26:28 +0000                     |
|  source |  setup.php on line 441                               |
|  file   |  /Users/nicols/Sites/moodles/sm/moodle/lib/setup.php |
+---------+------------------------------------------------------+
 RAY  Log

  1▕ array:4 [
  2▕   "identifer" => "asdf"
  3▕   "component" => "core"
  4▕   "a" => null
  5▕   "lang" => "en"
  6▕ ]

Get the UI which is shown on the homepage

When I pull the latest version of buggregator from docker hub I get the app version which is shown in the images in the Readme but when I saw the version on the website I fell in love with that UI. I did not find a way in the readme to be able to get that version I might miss something but is there a way to get this fancy looking version?

Screenshot 2022-03-22 at 22 15 02

By the way; I love working with buggregator it really makes me more productive if there is a way I can fund you some coffee please let me know!

is it possible to password protect the dashboard

hi,

is it possible to somehow password protect the dashboard?

this would be useful for tracking live servers.
I know I could tunnel it to my local installation, but with more developers it get's a bit complicated.

thanks, cheers, dan

Unraid Community App

Lots of businesses / dev teams run unraid for files which have community apps, which allow Dockers to be pulled in

Would be super if this was on that marketplace (its all free btw)

Replace Eloquent with CycleORM v2.x

Cycle is a PHP DataMapper ORM and Data Modelling engine designed to safely work in classic and daemonized PHP applications (like RoadRunner). The ORM provides flexible configuration options to model datasets, a powerful query builder, and supports dynamic mapping schemas. The engine can work with plain PHP objects, support annotation declarations, and proxies via extensions.

https://cycle-orm.dev/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.