Laravel Health Panel

Overview

Health Monitor

Laravel Server & App Health Monitor and Notifier

Latest Stable Version License Code Quality

Build Downloads Coverage PHP

This package checks if the application resources are running as they should and creates a service status panel. It has the following main points:

  • Highly extensible and configurable: you can create new checkers and notifiers very easily, and you can virtually change everything on it.
  • Easy configuration: uses YAML as configuration files
  • Resilient resource checker: if the framework is working and at least one notification channel, you should receive notification messages.
  • Built-in notification system: get notifications via mail, slack, telegram or anything else you need.
  • Routes for: panel, json result, string result and resource.
  • Configurable panel design.
  • Cache.
  • Schedule checks to automatically receive notifications when a service fails.
  • View app error messages right in the panel.
  • Http response codes 200 and 500, on error, for services like Envoyer to keep track of your app health.

Built-in Resources

Heath has pre-configured resource checkers for the following services:

  • Adyen
  • AppKey
  • APIs
  • Broadcasting
  • Cache
  • ConfigurationCached
  • Certificate
  • Checkout.com
  • Database
  • DebugMode
  • DirectoryPermissions
  • DiskSpace
  • DocuSign
  • ElasticsearchConnectable
  • EnvExists
  • Filesystem
  • Framework
  • Horizon
  • Http
  • Https
  • LaravelServices
  • Latency
  • LocalStorage
  • Mail
  • MailgunConnectable
  • MemcachedConnectable
  • MigrationsUpToDate
  • MySql
  • MySqlConnectable
  • NewrelicDeamon
  • NginxServer
  • PackagesUpToDate
  • Php
  • PostgreSqlConnectable
  • PostgreSqlServer
  • Queue
  • QueueWorkers
  • RebootRequired
  • Redis
  • RedisConnectable
  • RedisServer
  • RoutesCached
  • S3
  • SecurityChecker
  • SeeTickets
  • Sendinblue
  • ServerLoad
  • ServerVars
  • ServerUptime
  • Sshd
  • Supervisor

But you can add anything else you need, you just have to find the right checker to use or just create a new checker for your resource.

Easy Configuration

Creating new resources monitors is easy, just create a new YAML file in app's config/health folder and it's done. Here's some examples:

Amazon S3

name: S3
abbreviation: s3
checker: PragmaRX\Health\Checkers\CloudStorageChecker
notify: true
driver: s3
file: pragmarx-health-s3-testfile.txt
contents: {{ str_random(32) }}
error_message: 'Amazon S3 connection is failing.'
column_size: 4

Nginx

name: NginxServer
abbreviation: ngnxsrvr
checker: PragmaRX\Health\Checkers\ProcessChecker
command: 'pgrep %s'
method: process_count
process_name: nginx
instances:
    minimum:
        count: 4
        message: 'Process "%s" has not enough instances running: it has %s, when should have at least %s'
    maximum:
        count: 8
        message: 'Process "%s" exceeded the maximum number of running instances: it has %s, when should have at most %s'
notify: true
pid_file_missing_error_message: 'Process ID file is missing: %s.'
pid_file_missing_not_locked: 'Process ID file is not being used by any process: %s.'
column_size: 4

Screenshots

Panel

default panel

Panel alternate design

If you have lots of services to check, you may change the default panel design to use less space:

default panel

Panel in 4 columns layout

default panel

Error Messages

Mouse over a failing resource and get instant access to the error message:

default panel

Click the resource button and you'll get an alert showing the error message:

default panel

Slack Notification

Here's an example of notification sent via Slack:

default panel

Artisan Console Commands

The health check commands below also return an exit code in a standard format:

Numeric Value Service Status Status Description
0 OK Service and appears to be functioning properly
1 Warning Check ran okay, but was above some "warning" threshold
2 Critical The check detected service is not running or is above a "critical" threshold
3 Unknown Settings for the service check may be misconfigured and is preventing the check for being performed

health:panel

Use the command health:panel to view the status of your services in console.

health:check

Use the command health:check to check all your resources and send notifications on failures.

default panel

Routes

After installing you will have access to the following routes:

/health/panel

The main panel route.

/health/check

Returns a json with everything the package knows about your services:

default panel

/health/string

Returns a string with status on all your services, useful when using other monitoring services:

hlthFAIL-dbFAIL-filesystemOK-frmwrkOK-httpOK-httpsOK-mailOK

/health/resource/{name}

Returns a json with information about a particular service:

default panel

Requirements

  • PHP 7.1+
  • Laravel 5.6+

Installing

Use Composer to install it:

composer require pragmarx/health

Installing on Laravel

Add the Service Provider to your config/app.php:

PragmaRX\Health\ServiceProvider::class,

Publish config and views

php artisan vendor:publish --provider="PragmaRX\Health\ServiceProvider"

Hit The Health Panel

http://yourdomain.com/health/panel

Configure All The Things

Almost everything is easily configurable in this package:

  • Panel name
  • Title and messages
  • Resource checkers
  • Slack icon
  • Notification channels
  • Template location
  • Routes and prefixes
  • Mail server
  • Cache
  • Scheduler

Configure binaries

Some of the checkers need you to configure the proper binary path for the checker to work:

'services' => [
    'ping' => [
        'bin' => env('HEALTH_PING_BIN', '/sbin/ping'),
    ],

    'composer' => [
        'bin' => env('HEALTH_COMPOSER_BIN', 'composer'),
    ],
],

Allowing Slack Notifications

To receive notifications via Slack, you'll have to setup Incoming Webhooks and add this method to your User model with your webhook:

/**
 * Route notifications for the Slack channel.
 *
 * @return string
 */
public function routeNotificationForSlack()
{
    return config('services.slack.webhook_url');
}

Cache

When Health result is cached, you can flush the cache to make it process all resources again by adding ?flush=true to the url:

http://yourdomain.com/health/panel?flush=true

Events

If you prefer to build you own notifications systems, you can disable it and listen for the following event

PragmaRX\Health\Events\RaiseHealthIssue::class

Broadcasting Checker

Broadcasting checker is done via ping and pong system. The broadcast checker will ping your service, and it must pong back. Basically what you need to do is to call back a url with some data:

Redis + Socket.io

var request = require('request');
var server = require('http').Server();
var io = require('socket.io')(server);
var Redis = require('ioredis');
var redis = new Redis();

redis.subscribe('pragmarx-health-broadcasting-channel');

redis.on('message', function (channel, message) {
    message = JSON.parse(message);

    if (message.event == 'PragmaRX\\Health\\Events\\HealthPing') {
        request.get(message.data.callbackUrl + '?data=' + JSON.stringify(message.data));
    }
});

server.listen(3000);

Pusher

<!DOCTYPE html>
<html>
    <head>
        <title>Pusher Test</title>
        <script src="https://js.pusher.com/3.2/pusher.min.js"></script>
        <script>
            var pusher = new Pusher('YOUR-PUSHER-KEY', {
                encrypted: true
            });

            var channel = pusher.subscribe('pragmarx-health-broadcasting-channel');

            channel.bind('PragmaRX\\Health\\Events\\HealthPing', function(data) {
                var request = (new XMLHttpRequest());

                request.open("GET", data.callbackUrl + '?data=' + JSON.stringify(data));

                request.send();
            });
        </script>
    </head>

    <body>
        Pusher waiting for events...
    </body>
</html>

Programatically checking resources

$generalHealthState = app('pragmarx.health')->checkResources();

// or

$databaseHealthy = app('pragmarx.health')->checkResource('database')->isHealthy();

Checking in artisan commands example:

Artisan::command('database:health', function () {
    app('pragmarx.health')->checkResource('database')->isHealthy()
        ? $this->info('database is healthy')
        : $this->info('database is in trouble')
    ;
})->describe('Check database health');

SecurityChecker

As the SensioLabs Security Checker package was abandoned, this checker now depends on local-php-security-checker. You need to compile or install it on your server or container in order to use this checker, and update the config/resources/SecurityChecker.yml file accordingly.

Lumen

To use it on Lumen, you'll probably need to do something like this on your bootstrap/app.php:

$app->instance('path.config', app()->basePath() . DIRECTORY_SEPARATOR . 'config');
$app->instance('path.storage', app()->basePath() . DIRECTORY_SEPARATOR . 'storage');

$app->withFacades();

$app->singleton('Illuminate\Contracts\Routing\ResponseFactory', function ($app) {
    return new \Illuminate\Routing\ResponseFactory(
        $app['Illuminate\Contracts\View\Factory'],
        $app['Illuminate\Routing\Redirector']
    );
});

$app->register(PragmaRX\Health\ServiceProvider::class);

Testing

$ composer test

Author

Antonio Carlos Ribeiro

License

Health is licensed under the BSD 3-Clause License - see the LICENSE file for details

Contributing

Pull requests and issues are more than welcome.

Comments
  • fix: pass singleton() a closure instead of an object

    fix: pass singleton() a closure instead of an object

    Laravel 7.22.0 (https://github.com/laravel/framework/releases/tag/v7.22.0) throws TypeErrors when passed an object instead of a closure or class name.

    Fixes #183

    opened by vvanpo 11
  • Installation failed on Laravel 5.6

    Installation failed on Laravel 5.6

    Writing lock file
    Generating optimized autoload files
    > Illuminate\Foundation\ComposerScripts::postAutoloadDump
    > @php artisan package:discover
    
    In Parser.php line 343:
                                                                            
      Duplicate key "name" detected at line 3 (near "name: health-queue").  
                                                                            
    
    Script @php artisan package:discover handling the post-autoload-dump event returned with error code 1```
    
    opened by pavinthan 6
  • Support phpunit/php-timer 3.0.0

    Support phpunit/php-timer 3.0.0

    opened by krns 5
  • Fixing bug for PHP 7.2 compatibility

    Fixing bug for PHP 7.2 compatibility

    I am running PHP 7.2.0. When I try to run php artisan on 7.2 with this package installed, I get the following error:

    In Yaml.php line 56:
                                                                                  
      count(): Parameter must be an array or an object that implements Countable
    

    Here's the full stacktrace:

    [2017-12-15 16:52:37] local.ERROR: count(): Parameter must be an array or an object that implements Countable {"exception":"[object] (ErrorException(code: 0): count(): Parameter must be an array or an object that implements Countable at myapp/vendor/pragmarx/health/src/Support/Yaml.php:56)
    [stacktrace]
    #0 [internal function]: Illuminate\\Foundation\\Bootstrap\\HandleExceptions->handleError(2, 'count(): Parame...', 'myapp...', 56, Array)
    #1 myapp/vendor/pragmarx/health/src/Support/Yaml.php(56): count('{{ app.url }}')
    #2 myapp/vendor/pragmarx/health/src/Support/Yaml.php(37): PragmaRX\\Health\\Support\\Yaml->replaceContents('name: Http\
    abbr...')
    #3 myapp/vendor/pragmarx/health/src/Support/Yaml.php(111): PragmaRX\\Health\\Support\\Yaml->parseFile('name: Http\
    abbr...')
    #4 myapp/vendor/pragmarx/health/src/Support/Yaml.php(25): PragmaRX\\Health\\Support\\Yaml->loadFile('myapp...', 'name: Http\
    abbr...', true)
    #5 myapp/vendor/laravel/framework/src/Illuminate/Support/Collection.php(910): PragmaRX\\Health\\Support\\Yaml->PragmaRX\\Health\\Support\\{closure}('Http.yml', 7)
    #6 myapp/vendor/pragmarx/health/src/Support/Yaml.php(26): Illuminate\\Support\\Collection->mapWithKeys(Object(Closure))
    #7 myapp/vendor/pragmarx/health/src/Support/ResourceLoader.php(185): PragmaRX\\Health\\Support\\Yaml->loadYamlFromDir('myapp...')
    #8 myapp/vendor/pragmarx/health/src/Support/ResourceLoader.php(163): PragmaRX\\Health\\Support\\ResourceLoader->loadResourcesFiles()
    #9 myapp/vendor/pragmarx/health/src/Support/ResourceLoader.php(206): PragmaRX\\Health\\Support\\ResourceLoader->loadFiles()
    #10 myapp/vendor/pragmarx/health/src/Support/ResourceLoader.php(221): PragmaRX\\Health\\Support\\ResourceLoader->loadResourcesForType('files', Object(Illuminate\\Support\\Collection))
    #11 myapp/vendor/pragmarx/health/src/Support/ResourceLoader.php(126): PragmaRX\\Health\\Support\\ResourceLoader->loadResourcesFrom('files', 'both', Object(Illuminate\\Support\\Collection))
    #12 myapp/vendor/pragmarx/health/src/Support/ResourceLoader.php(75): PragmaRX\\Health\\Support\\ResourceLoader->load()
    #13 myapp/vendor/pragmarx/health/src/ServiceProvider.php(251): PragmaRX\\Health\\Support\\ResourceLoader->getResources()
    #14 myapp/vendor/pragmarx/health/src/ServiceProvider.php(321): PragmaRX\\Health\\ServiceProvider->registerResourcesRoutes()
    #15 myapp/vendor/pragmarx/health/src/ServiceProvider.php(240): PragmaRX\\Health\\ServiceProvider->registerRoutes()
    #16 myapp/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(586): PragmaRX\\Health\\ServiceProvider->register()
    #17 myapp/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php(75): Illuminate\\Foundation\\Application->register(Object(PragmaRX\\Health\\ServiceProvider))
    #18 myapp/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(561): Illuminate\\Foundation\\ProviderRepository->load(Array)
    #19 myapp/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterProviders.php(17): Illuminate\\Foundation\\Application->registerConfiguredProviders()
    #20 myapp/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(213): Illuminate\\Foundation\\Bootstrap\\RegisterProviders->bootstrap(Object(Illuminate\\Foundation\\Application))
    #21 myapp/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(296): Illuminate\\Foundation\\Application->bootstrapWith(Array)
    #22 myapp/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(119): Illuminate\\Foundation\\Console\\Kernel->bootstrap()
    #23 myapp/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))
    #24 {main}
    "} 
    

    With PHP 7.2, the count() method now requires either an array or a Countable object. A string was passed in, {{ app.url }}. Previous to 7.2, this method would return 1, satisfying the condition on line 56. To replicate the behavior with 7.2, the closest function I found was empty(), where doing !empty() would return the same true value with a nonempty string. empty() also works on arrays, if an array is passed in.

    I've updated CI to start testing on PHP 7.2 as well.

    opened by EricTendian 5
  • Sunsetting SensioLabs Security Checker

    Sunsetting SensioLabs Security Checker

    Packages Security Checker uses sensiolabs/security-checker library to perform security checks. This latter has been deprecated and silenced starting from February 1st, 2021 according to the official repo SensioLabs Security Checker. The author recommends the use of other CLI tools. We can temporarily disable the Packages Security Checker and drop sensiolabs from the list of dependencies until a decision is made on which tool will be used next.

    opened by khoubeib-zembra 4
  • Broken scheduler config

    Broken scheduler config

    Hey, it seems that the path for the scheduler config is wrong in the service provider in the registerTasks method. It should be config('health.notifications.scheduler.enabled') and ($frequency = config('health.notifications.scheduler.frequency')) &&.

    As a hotfix, simply move the scheduler key out of the notifications wrapper part of the config, but that seems to break the whole app on Laravel 8. I just manually registered the health checks for now, but I think you should fix it :).

    If you need more info/context, i'll be happy to help!

    opened by truesteps 4
  • Update phpunit/php-timer dependency to ^1.0|^2.0|^3.0|^4.0|^5.0

    Update phpunit/php-timer dependency to ^1.0|^2.0|^3.0|^4.0|^5.0

    Hello,

    I'm using your package in my project and have the following error when doing the composer require

    image

    Last release v0.10.3 is using the followings: "phpunit/php-timer": "^1.0|^2.0",

    I saw that you already updateded it in master.

    Master : "phpunit/php-timer": "^1.0|^2.0|^3.0|^4.0|^5.0",

    Could you release that new version with the phpunit/php-timerdependency updated ?

    Thanks a lot !

    opened by rohsyl 4
  • Type Error issue with latest Laravel 7.x

    Type Error issue with latest Laravel 7.x

    Due to this PR https://github.com/laravel/framework/pull/33539, the package throws an error

    ` TypeError

    Illuminate\Container\Container::bind(): Argument #2 ($concrete) must be of type Closure|string|null

    at vendor/laravel/framework/src/Illuminate/Container/Container.php:238 234| // bound into this container to the abstract type and we will just wrap it 235| // up inside its own Closure to give us more convenience when extending. 236| if (! $concrete instanceof Closure) { 237| if (! is_string($concrete)) {

    238| throw new \TypeError(self::class.'::bind(): Argument #2 ($concrete) must be of type Closure|string|null'); 239| } 240| 241| $concrete = $this->getClosure($abstract, $concrete); 242| }

    +10 vendor frames 11 artisan:37 Illuminate\Foundation\Console\Kernel::handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput)) `

    opened by ssmusoke 4
  • Argument 1 passed to PragmaRX\Health\Support\ResourceChecker::PragmaRX\Health\Support\{closure}() must be an instance of PragmaRX\Health\Support\Resource, boolean given

    Argument 1 passed to PragmaRX\Health\Support\ResourceChecker::PragmaRX\Health\Support\{closure}() must be an instance of PragmaRX\Health\Support\Resource, boolean given

    This is a know problem or a genuine error? That’s a pretty vanilla Laravel 5.7 install.

    Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_RECOVERABLE_ERROR) Argument 1 passed to PragmaRX\Health\Support\ResourceChecker::PragmaRX\Health\Support{closure}() must be an instance of PragmaRX\Health\Support\Resource, boolean given

    on vendor/pragmarx/health/src/Support/ResourceChecker.php:185

    /health/panel works ok, I’ve got that error on /health/check.

    opened by sdbruder 4
  • Health status fails when Cache (Redis) is down

    Health status fails when Cache (Redis) is down

    This will return 500, so your Envoyer health checks / etc will pick it up -- however I think it could be handled more gracefully. It also stops the email notices from going out because the console checks fail before generating an email. Slack is also probably stopped, though I didn't test this.

    Perhaps if a connection to the cache cannot be made, the cache layer should be ignored and health checks should go directly to the service they check and not write their response to the cache.

    Thoughts?

    opened by terramauthe 4
  • Notification email improvements - error message included and custom subject line

    Notification email improvements - error message included and custom subject line

    This PR makes two improvements to the notification email:

    1. Previously, the email was only showing the action message in the email, which was something like The '{{ resource }}' service is in trouble and needs attention in {{ url }}. This message was not very helpful as it did not show why something was failing, requiring someone to click to the panel to see. If someone got an email in the middle of the night and went to check the health panel when they woke up, often the error would have cleared and it would be difficult/impossible to track down what the original failure was.

      To fix this, the error message is now included as a new line in the email. If for some reason no error message exists, the email will still send, just with that line omitted.

    2. If this package is used across multiple applications and environments, the subject line for the email is not descriptive as to where the issue occurred.

      To fix this, a user can now set a custom subject in their config by changing the notifications.subject property in the config. They could change it to something like 'subject' => '['.config('app.env').'] '.config('app.name').' Health Status', which provides more info about which health status this is for. If the subject is null (because someone hasn't updated their config file), the name of the notification class will be used.

    opened by EricTendian 3
  • default extension checker config fix

    default extension checker config fix

    extension checked had an annoying 0 in its selector, since the targets got ilformatted yml input. this makes it to a proper format, to hide it.

    also supports multiple extension checkers.

    image

    opened by lintaba 0
  • Laravel 5.8: syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ',' or ')'

    Laravel 5.8: syntax error, unexpected '=>' (T_DOUBLE_ARROW), expecting ',' or ')'

    Unable to hit route www.domain.com/health/check or artisan command health:panel

    Issue occurring on \vendor\pragmarx\health\src\Checkers\Extensions.php

    $alerts = $needed->reject(fn ($value) => $installed->contains($value));

    Laravel version: 5.8 PHP: 7.2.3

    opened by naowas 1
  • Enhancement: feature to monitor Health on other managed sites

    Enhancement: feature to monitor Health on other managed sites

    While this project is good for monitoring a website on a site-by-site basis, it will be really useful if it can be extended to cover a group of websites (perhaps by a configuration file).

    This enhancement can be easily achieved because of 2 major and powerful features which this package already provides, which are:

    1. Routes which can serve as API access to the service and
    2. It already supports JSON response

    These two can be leveraged on to provide a unified dashboard (similar to services of OhDearApp?) for a group of websites controlled/managed (with some sort of Authentication of course).

    This package can be further improved to leverage on Laravel Notification to update this proposed dashboard in real-time. Initial load of the dashboard may make AJAX requests to get the Health status for each of the group of websites/servers, while the page keeps polling/listening for Notifications tom update real-time.

    If this is welcomed, I will like to contribute to it, provided there is someone that can help with the design/prototyping of the frontend components (UI design is not really my strength :)).

    opened by damms005 2
  • Improve on the help context for reports

    Improve on the help context for reports

    I am getting this idea from the new Laravel's flare/ignition package.

    Can this package include a kind of hint for some of the reports that needs some tweaks for improvement? E.g. the check for ServerLoad reports:

    Your server might be overloaded, current server load values are "2.52, 1.88 and 1.67", which are above the threshold values: "2, 1.5 and 1".

    Is there no way of appending a link to that response that gives more insight in that specific context? E.g.

    Your server might be overloaded, current server load values are "2.52, 1.88 and 1.67", which are above the threshold values: "2, 1.5 and 1". Check some stackoverflow or web article link for some ideas on how to improve this

    enhancement 
    opened by damms005 2
Releases(V0.10.2)
Owner
Antonio Carlos Ribeiro
Antonio Carlos Ribeiro
Laravel package to periodically monitor the health of your server and application.

Laravel package to periodically monitor the health of your server and application. It ships with common checks out of the box and allows you to add your own custom checks too. The packages comes with both console and web interfaces.

Sarfraz Ahmed 170 Dec 13, 2022
.env vars check for Spatie's Laravel Health

Custom check for Spatie's Laravel Health - Ensure every .env variable you need has a value

Encodia 4 Nov 7, 2022
Laravel Backup Panel provides a dashboard for spatie/laravel-backup package.

Laravel Backup Panel Laravel Backup Panel provides a dashboard for spatie/laravel-backup package. It lets you: create a backup (full | only database |

Pavel Mironchik 366 Dec 6, 2022
Easily add a full Laravel blog (with built in admin panel and public views) to your laravel project with this simple package.

Webdevetc BlogEtc - Complete Laravel Blog Package Quickly add a blog with admin panel to your existing Laravel project. It has everything included (ro

WebDevEtc. 227 Dec 25, 2022
An open source Laravel Soundboard with Admin Panel CRUD (Create Read Update Delete) built on Laravel, Bootstrap, and Vue.js

Laravel Soundboard An open source Laravel Soundboard with Admin Panel CRUD (Create Read Update Delete) built on Laravel 5.8, Bootstrap 4, Vue.js, Boot

Jeremy Kenedy 24 Oct 28, 2022
Laravel Ajax Datatable is a nice laravel admin panel which includes authentication, CRUD and Ajax datatable.

Laravel Ajax Datatable is a nice laravel admin panel which includes authentication, CRUD and Ajax datatable. the datatable is created with laravel & ajax so No need to install another package, yout can do search, sort, paginate and show records per page fastly.

Jumah 3 Oct 3, 2022
Easy-to-install Admin Panel for Laravel

CSS Framework: https://0notole.github.io/elements.css/ Install project: composer create-project --prefer-dist laravel/laravel screen, cd screen Add re

Anatoly Silko 3 Aug 25, 2021
Simple project to send bulk comma-separated emails using laravel and messenger module from quick admin panel generator.

About Laravel Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experie

Novath Thomas 1 Dec 1, 2021
👻 It's never been easier to build and customize admin panels. Yah! yaldash is a beautifully designed administration panel for Laravel.

?? It's never been easier to build and customize admin panels. Yah! yaldash is a beautifully designed administration panel for Laravel.

Yasser A.Idrissi 396 Dec 30, 2022
Access laravel log through Filament admin panel

Access laravel log through Filament admin panel Features Syntax highlighting Quickly jump between start and end of the file Refresh log contents Clear

Guilherme Saade 20 Nov 22, 2022
📦 Flatpack: Administration panel for Laravel, ready to assemble.

Flatpack ?? Administration panel for Laravel, ready to assemble. Quickly create CRUD (Create, Read, Update, Delete) interfaces for your Eloquent model

Flatpack 10 Sep 16, 2022
Easily add Laravel Telescope and Horizon to Filament admin panel.

Filament Debugger This is where your description should go. Limit it to a paragraph or two. Consider adding a small example. Installation You can inst

Stephen Jude 5 Nov 24, 2022
This is an open source demo of administration panel for polymorphic relationship and SEO content

Laravel SEO admin This application demonstrates usage of polymorphic relationships described at (http://maxoffsky.com/code-blog/using-polymorphic-rela

Maksim Surguy 127 Oct 11, 2022
With dadjokes every time you load your control panel you'll be greeted by an epic dad joke on the dashboard.

Filament Dad Jokes Widget With DadJokes every time you load your control panel you'll be greeted by an epic dad joke on the dashboard. Installation Yo

Craig Smith 15 Jan 7, 2023
A mostly useless package to display framework versions at the bottom of the Admin navigation panel.

A mostly useless package to display framework versions at the bottom of the Filament Admin navigation panel and an optional widget to do the same in the dashboard or custom pages.

Adam Weston 10 Nov 8, 2022
Filament Admin Panel application installer.

Filament Installer Install globally with composer. composer global require awcodes/filament-installer Now you can run the new command to quickly set u

Adam Weston 7 Dec 18, 2022
A simple job posting application using PHP with an Admin Panel. Register, Login and create the job in apnel. The job gets posted on index page.

Jobee A simple job posting application using PHP with an Admin Panel. Register, Login and create the job in apnel. The job gets posted on index page.

Fahad Makhdoomi 2 Aug 27, 2022
List of 77 languages for Laravel Framework 4, 5, 6, 7 and 8, Laravel Jetstream , Laravel Fortify, Laravel Breeze, Laravel Cashier, Laravel Nova and Laravel Spark.

Laravel Lang In this repository, you can find the lang files for the Laravel Framework 4/5/6/7/8, Laravel Jetstream , Laravel Fortify, Laravel Cashier

Laravel Lang 6.9k Jan 2, 2023
⚡ Laravel Charts — Build charts using laravel. The laravel adapter for Chartisan.

What is laravel charts? Charts is a Laravel library used to create Charts using Chartisan. Chartisan does already have a PHP adapter. However, this li

Erik C. Forés 31 Dec 18, 2022