{"id":15293913,"url":"https://github.com/othyn/laravel-toastie","last_synced_at":"2026-01-05T13:46:32.944Z","repository":{"id":57749189,"uuid":"524158170","full_name":"othyn/laravel-toastie","owner":"othyn","description":"  Simple Toast notifications with built in default designs for ALT stack (Alpine, Laravel, Tailwind) applications with easy options to customise to your hearts content.","archived":false,"fork":false,"pushed_at":"2022-10-27T13:37:36.000Z","size":192,"stargazers_count":1,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-29T20:19:05.136Z","etag":null,"topics":["alpine","alpinejs","composer","composer-package","laravel","laravel-framework","laravel-library","laravel-plugin","notifications","tailwind","tailwindcss","toast","toast-notifications"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/othyn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-08-12T16:38:20.000Z","updated_at":"2022-08-13T07:06:43.000Z","dependencies_parsed_at":"2022-08-26T23:21:31.334Z","dependency_job_id":null,"html_url":"https://github.com/othyn/laravel-toastie","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/othyn%2Flaravel-toastie","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/othyn%2Flaravel-toastie/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/othyn%2Flaravel-toastie/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/othyn%2Flaravel-toastie/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/othyn","download_url":"https://codeload.github.com/othyn/laravel-toastie/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245294774,"owners_count":20591909,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["alpine","alpinejs","composer","composer-package","laravel","laravel-framework","laravel-library","laravel-plugin","notifications","tailwind","tailwindcss","toast","toast-notifications"],"created_at":"2024-09-30T16:53:39.754Z","updated_at":"2026-01-05T13:46:32.901Z","avatar_url":"https://github.com/othyn.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n    \u003cimg src=\"art/logo.svg\" alt=\"logo\" width=\"200\" height=\"auto\" /\u003e\n    \u003ch1\u003eLaravel Toastie\u003c/h1\u003e\n    \u003cp\u003eSimple Toast notifications with built in default designs for ALT stack (Alpine, Laravel, Tailwind) applications with easy options to customise to your hearts content.\u003c/p\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003cp\u003e\n        \u003ca href=\"https://github.com/othyn/laravel-toastie/actions/workflows/tests.yml\"\u003e\n            \u003cimg src=\"https://github.com/othyn/laravel-toastie/actions/workflows/tests.yml/badge.svg\" alt=\"tests\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/othyn/laravel-toastie/actions/workflows/stan.yml\"\u003e\n            \u003cimg src=\"https://github.com/othyn/laravel-toastie/actions/workflows/stan.yml/badge.svg\" alt=\"stan\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/othyn/laravel-toastie/actions/workflows/lint.yml\"\u003e\n            \u003cimg src=\"https://github.com/othyn/laravel-toastie/actions/workflows/lint.yml/badge.svg\" alt=\"lint\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/othyn/laravel-toastie/actions/workflows/tests.yml\"\u003e\n            \u003cimg src=\"https://img.shields.io/badge/Test Coverage-100%25-green\" alt=\"coverage\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"#floppy_disk-install\"\u003e\n            \u003cimg src=\"https://img.shields.io/packagist/dt/othyn/laravel-toastie?color=green\" alt=\"downloads\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/othyn/laravel-toastie/graphs/contributors\"\u003e\n            \u003cimg src=\"https://img.shields.io/github/contributors/othyn/laravel-toastie\" alt=\"contributors\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/othyn/laravel-toastie/network/members\"\u003e\n            \u003cimg src=\"https://img.shields.io/github/forks/othyn/laravel-toastie\" alt=\"forks\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/othyn/laravel-toastie/stargazers\"\u003e\n            \u003cimg src=\"https://img.shields.io/github/stars/othyn/laravel-toastie\" alt=\"stars\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/othyn/laravel-toastie/issues/\"\u003e\n            \u003cimg src=\"https://img.shields.io/github/issues/othyn/laravel-toastie\" alt=\"open issues\" /\u003e\n        \u003c/a\u003e\n        \u003ca href=\"https://github.com/othyn/laravel-toastie/blob/master/LICENSE\"\u003e\n            \u003cimg src=\"https://img.shields.io/github/license/othyn/laravel-toastie\" alt=\"license\" /\u003e\n        \u003c/a\u003e\n    \u003c/p\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003ch4\u003e\n        \u003ca href=\"#floppy_disk-install\"\u003eInstall Latest Version\u003c/a\u003e\n        \u003cspan\u003e · \u003c/span\u003e\n        \u003ca href=\"https://github.com/othyn/laravel-toastie/issues\"\u003eReport Bug\u003c/a\u003e\n        \u003cspan\u003e · \u003c/span\u003e\n        \u003ca href=\"https://github.com/othyn/laravel-toastie/issues\"\u003eRequest Feature\u003c/a\u003e\n    \u003c/h4\u003e\n\u003c/div\u003e\n\n\u003c!-- Table of Contents --\u003e\n\n## :notebook_with_decorative_cover: Table of Contents\n\n- [About the Project](#star2-about-the-project)\n  - [Screenshots](#camera-screenshots)\n  - [Tech Stack](#space_invader-tech-stack)\n  - [Features](#dart-features)\n- [Install](#floppy_disk-install)\n  - [Version Matrix](#version-matrix)\n- [Usage](#hammer_and_wrench-usage)\n  - [Configuration](#wrench-configuration)\n  - [PHP API](#elephant-php-api)\n  - [Blade Components](#page_facing_up-blade-components)\n- [Contributing](#bread-contributing)\n  - [Project Tooling Quick Reference](#toolbox-project-tooling-quick-reference)\n- [Changelog](https://github.com/othyn/laravel-toastie/releases)\n- [License](#warning-license)\n- [Acknowledgements](#gem-acknowledgements)\n\n\u003c!-- About the Project --\u003e\n\n## :star2: About the Project\n\nAll the other Laravel Toast notification libraries out there seemed to have nailed the API for creating Toasts, but the key areas they were lacking in are keeping up to date and :sparkles: style :sparkles:.\n\nThis package aims to solve that by providing a default set of Toasts that look good and are easy to use, with it being very easy to change up the design if you hate the look of them and roll your own!\n\nToastie has support for 4 key toast types/states; Success, Info, Warning and Error.\n\n\u003c!-- Screenshots --\u003e\n\n### :camera: Screenshots\n\n\u003cp align=\"middle\"\u003e\n  \u003cimg src=\"art/screenshot_success.png\" width=\"40%\" alt=\"screenshot of success toast\" /\u003e\n  \u0026nbsp;\n  \u003cimg src=\"art/screenshot_info.png\" width=\"40%\" alt=\"screenshot of info toast\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"middle\"\u003e\n  \u003cimg src=\"art/screenshot_warning.png\" width=\"40%\" alt=\"screenshot of warning toast\" /\u003e\n  \u0026nbsp;\n  \u003cimg src=\"art/screenshot_error.png\" width=\"40%\" alt=\"screenshot of error toast\" /\u003e\n\u003c/p\u003e\n\n\u003c!-- TechStack --\u003e\n\n### :space_invader: Tech Stack\n\n\u003cul\u003e\n    \u003cli\u003eLanguage: \u003ca href=\"https://www.php.net/\"\u003ePHP\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003eDependency Manager: \u003ca href=\"https://getcomposer.org/\"\u003eComposer\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003eContainerisation: \u003ca href=\"https://www.docker.com/\"\u003eDocker\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003eBuild Tool: \u003ca href=\"https://www.gnu.org/software/make/manual/html_node/Simple-Makefile.html\"\u003eMake\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003eFramework: \u003ca href=\"https://laravel.com/\"\u003eLaravel\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003eFramework: \u003ca href=\"https://alpinejs.dev/\"\u003eAlpine\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003eFramework: \u003ca href=\"https://tailwindcss.com/\"\u003eTailwind\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003ePackage: \u003ca href=\"https://github.com/illuminate/support\"\u003eilluminate/support\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003ePackage: \u003ca href=\"https://github.com/orchestra/testbench\"\u003eorchestra/testbench\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003ePackage: \u003ca href=\"https://github.com/pestphp/pest\"\u003epestphp/pest\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003ePackage: \u003ca href=\"https://github.com/laravel/pint\"\u003elaravel/pint\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003ePackage: \u003ca href=\"https://github.com/phpstan/phpstan\"\u003ephpstan/phpstan\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\n\u003c!-- Features --\u003e\n\n### :dart: Features\n\n- Simple to use\n- Laravelified\n- Alpine \u0026 Tailwind\n- Expressive API\n- Auto hide or only on dismiss\n- :sparkles: Stylish :sparkles: and modern default design\n- Highly customisable\n- Cheeky\n\n\u003c!-- Install --\u003e\n\n## :floppy_disk: Install\n\nInstallation can be done via [Composer](https://getcomposer.org/):\n\n```sh\ncomposer require othyn/laravel-toastie\n```\n\nAfter installation you will need to do a fresh build of any assets via your frontend build tool of choice, which is probably [Vite](https://vitejs.dev/). This is so that the Tailwind bundler can pickup the new views and load in the classes the package uses (if they haven't already been bundled via usage elsewhere in your application) into your app bundles. You may also need to restart any Docker containers if you are still having issues.\n\nNext you are going to want to head down to the [configuration](#wrench-configuration), so lets get started on [usage](#hammer_and_wrench-usage)! See you there.\n\n### Version Matrix\n\nHere is the current version matrix for project supported versions of used frameworks and libraries.\n\n| Toastie Version | PHP Version | Laravel Version | Alpine Version | Tailwind Verison |\n| --------------- | ----------- | --------------- | -------------- | ---------------- |\n| `1.0.0`         | `^8.1`      | `^9.24`         | `^3.4.2`       | `^3.1.0`         |\n\nIf you require support for an older version of Laravel, submit an issue as we may be able to look into dropping the version requirements down, as I don't think it needs to be this new. Or, feel free to submit a PR!\n\n\u003c!-- Usage --\u003e\n\n## :hammer_and_wrench: Usage\n\nThere are three key parts to Toastie;\n\n1. The configuration.\n   - Where you can customise Toastie's behaviour.\n2. The PHP API.\n   - How you can call and action Toastie.\n3. The Blade components.\n   - How you can render Toastie.\n\nLet's kick things off with the configuration, I'll meet you down there.\n\n### :wrench: Configuration\n\nHello again! First thing we're going to need to do is publish the configuration so we can set things up how we want them.\n\nWe do this my telling Laravel to publish the config file into our working directory, instead of relying on the default one bundled with this package:\n\n```sh\nphp artisan vendor:publish \\\n    --provider=\"Othyn\\\\Toastie\\\\Providers\\\\ToastieServiceProvider\" \\\n    --tag=\"toastie-config\"\n```\n\nYou should now have an `config/toastie.php` file within your project that you can edit. If you go ahead and open it up, you'll see something like:\n\n```php\n\u003c?php\n\ndeclare(strict_types=1);\n\nreturn [\n    'timings' =\u003e [\n        /*\n         * Whether the toasts should automatically close after a specified time.\n         *\n         * This time can be specified by setting the 'timings.dismiss_delay' value.\n         */\n        'auto_dismiss' =\u003e env('TOASTIE_AUTO_DISMISS', true),\n\n        /*\n         * Time, in seconds, that the toast should take to be dismissed when dismissing automatically.\n         *\n         * REQUIRES the 'timings.auto_dismiss' setting to be enabled.\n         */\n        'dismiss_delay' =\u003e env('TOASTIE_DISMISS_DELAY', 4),\n    ],\n];\n```\n\nCustomise this to your hearts content, the configuration options available and a short description are provided above or in your new `config/toastie.php` file.\n\nLet's move onto the PHP API.\n\n### :elephant: PHP API\n\nCalling Toastie can be achieved one of three ways;\n\n- ... via the helper method.\n- ... via the Facade.\n- ... via a new instance of the class.\n\nChoose whichever way you prefer to do things. I'm partial for the helper method myself, its nice and easy with good IDE type hinting.\n\n#### The helper method\n\nIf you prefer taking things easy:\n\n```php\n// An info type \u0026 style toast\ntoastie()-\u003einfo('Remember to pick a movie to watch tonight!');\n\n// A warning type \u0026 style toast\ntoastie()-\u003ewarning('Its getting late, you should watch that movie...');\n\n// An error type \u0026 style toast\ntoastie()-\u003eerror('Ran out of popcorn.');\n\n// A success type \u0026 style toast\ntoastie()-\u003esuccess(\"Watched {$favouriteMovie}.\");\n```\n\n#### The Facade\n\nIf you prefer a more static way of life:\n\n```php\n// Remember to include the class!\nuse Othyn\\Toastie\\Facades\\Toastie;\n\n// ... some ungodly code ...\n\n// An info type \u0026 style toast\nToastie::info('Dinner\\'s 5 minutes away.');\n\n// A success type \u0026 style toast\nToastie::success('Dinner\\'s ready!');\n\n// A warning type \u0026 style toast\nToastie::warning('Dinner\\'s getting cold... you should eat now.');\n\n// An error type \u0026 style toast\nToastie::error('Dog ate it.');\n```\n\nYou'll notice that the Facade has the concrete class as a mixin on the PHPDoc blocks, this so you're IDE will be happy. I know mine is.\n\n#### The class instance\n\nIf you like things old school:\n\n```php\n// Remember to include the class!\nuse Othyn\\Toastie\\Services\\Toastie;\n\n// ... some ungodly code ...\n\n// Create the new toastie instance\n$toastie = new Toastie();\n\n// ... yet more ungodly code ...\n\n// An info type \u0026 style toast\n$toastie-\u003einfo('Hey! How are you? Heads up, the next toast will be a warning.');\n\n// A warning type \u0026 style toast\n$toastie-\u003ewarning('Uh-oh! Oh well, the next toast will be a success...');\n\n// A success type \u0026 style toast\n$toastie-\u003esuccess('Yes! Got the good one. Although the next one\\'s going to sting...');\n\n// An error type \u0026 style toast\n$toastie-\u003eerror('Ran out of bread.');\n\n// ... when will it end?!\n\n// Oh.\n```\n\nLet's move onto the Blade Components.\n\n### :page_facing_up: Blade Components\n\nBy default, Toastie ships with a Toast design and paired component for all of the 4 key toast types that it supports. It also has some 'smarter' options and options that allow you to customise the appearance to your heards content whilst retaining Toastie's expressive API.\n\nIn order to have Toastie load toasts onto your page, you'll need to do one of three things;\n\n- ... use the 'smart' Shared component to render only the default design but via one Component that dynamically changes; or\n- ... add the Blade component directly for the style/type of toast you want to use ([can be overridden](#customising-the-toast-design)); or\n- ... use the 'stack' Stack component to load all toasts automatically depending on what is called ([can be overridden](#customising-the-toast-design)).\n\nBy 'can be overridden', I'm refering to the fact that under those scenarios the actual underlying component file is loaded, meaning you can publish the views for the project and customise them to your hearts content, completely changing the design if you wish but retaining Toastie's expressive API. If you want to know how to do this, skip ahead to ['Customising the toast design'](#customising-the-toast-design).\n\nLet's kick things off with Toastie's default implementation.\n\n#### Using the dynamic default design\n\nThis is the easiest way to maximise the utilisation of Toastie if you are not wanting to change up any of the designs.\n\n```html\n\u003c!-- my-view.blade.php --\u003e\n\n\u003c!-- Will render only the required style/type of toast when called --\u003e\n\u003cx-toastie::shared /\u003e\n```\n\n_**That's it!**_ You're now using Toastie, just call Toastie via one of the [PHP API](#elephant-php-api) methods described above and watch as toast goes everywhere! Enjoy!\n\nUnder the hood, this dynamically renders the default toast design, meaning this one isn't overridable - that functionality is reserved for the next two options so keep reading if that's what you want.\n\nThis should be the go to option for people just wanting Toastie to do all the work, so you can kick back and have another sip of coffee. Ahhhhhhhh.\n\nLet's move on.\n\n#### Using individual style/type components\n\nThis is the hardest, but most custom, utilisation of the Blade components:\n\n```html\n\u003c!-- my-view.blade.php --\u003e\n\n\u003c!-- Will render a success toast when called --\u003e\n\u003cx-toastie::success /\u003e\n\n\u003c!-- Will render an info toast when called --\u003e\n\u003cx-toastie::info /\u003e\n\n\u003c!-- Will render a warning toast when called --\u003e\n\u003cx-toastie::warning /\u003e\n\n\u003c!-- Will render an error toast when called --\u003e\n\u003cx-toastie::error /\u003e\n```\n\nAs you can see this is highly customisable, as you can place each toast somewhere different to render if you so wish. If you want to know how to do this, skip ahead to ['Customising the toast design'](#customising-the-toast-design).\n\nBut having 4 lines is silly to get you access to all the components, which is where the next component comes in.\n\n#### Lazy loading all components\n\nThis is the easiest way to maximise the utilisation of the Blade components whilst still retaining full control of the design:\n\n```html\n\u003c!-- my-view.blade.php --\u003e\n\n\u003c!-- Will render only the required style/type of toast when called --\u003e\n\u003cx-toastie::stack /\u003e\n```\n\nBy design, this will only ever render the required component should it have been called by you calling Toastie on the last page cycle.\n\nUnder the hood, its just pulling in each component directly, meaning if you want to override the styles this will allow you to still render all of the toasts whilst using your nice new designs. If you want to know how to do this, skip ahead to ['Customising the toast design'](#customising-the-toast-design).\n\n#### Customising the toast design\n\nSo, don't like that default Toastie design eh? Well then, I suppose I better tell you how to change it. First, we need to publish Toastie's view set into your project so you can customise it:\n\n```sh\nphp artisan vendor:publish \\\n    --provider=\"Othyn\\\\Toastie\\\\Providers\\\\ToastieServiceProvider\" \\\n    --tag=\"toastie-views\"\n```\n\nYou should now have a load of view files appear in a new `resources/views/vendor/toastie/components` directory within your project that you can now edit to your hearts content.\n\nTo explain the files that you are seeing, in alphabetical order:\n\n- `error.blade.php`\n  - Description: The error toast component.\n  - Usage: Used in the `x-toastie::error` and `x-toastie::stack` components.\n- `info.blade.php`\n  - Description: The info toast component.\n  - Usage: Used in the `x-toastie::info` and `x-toastie::stack` components.\n- `shared.blade.php`\n  - Description: The shared toast component.\n  - Usage: Used in the `x-toastie::shared` component.\n  - Extra: This is the default dynamic design one, I guess you can override it if you want, its just not designed with that in mind.\n- `stack.blade.php`\n  - Description: The stack toast component.\n  - Usage: Used in the `x-toastie::stack` component.\n  - Extra: Renders the `error`, `info`, `success` and `warning` components within it depending on which one has been called, if any.\n- `success.blade.php`\n  - Description: The success toast component.\n  - Usage: Used in the `x-toastie::success` and `x-toastie::stack` components.\n- `warning.blade.php`\n  - Description: The warning toast component.\n  - Usage: Used in the `x-toastie::warning` and `x-toastie::stack` components.\n\nEach Blade component gets access to the following variables:\n\n- `$aToastieShouldBeDisplayed`\n  - Type: `Bool`\n  - Description: Whether a toast should be displayed _at all_.\n- `$shouldBeDisplayed`\n  - Type: `Bool`\n  - Description: Whether the specific type of toast that the instance is should be displayed.\n- `$type`\n  - Type: `Othyn\\Toastie\\Enums\\ToastieType`\n  - Description: The type of Toastie the instance is being called into being as.\n- `$message`\n  - Type: `string`\n  - Description: The message to be displayed in the toast.\n- `$shouldAutoDismiss`\n  - Type: `Bool`\n  - Description: Whether a toast should auto dismiss.\n- `$autoDismissInSeconds`\n  - Type: `Integer`\n  - Description: How long, in seconds, the toast should take to auto dismiss from when the page loads.\n- `$autoDismissInMilliseconds`\n  - Type: `Integer`\n  - Description: How long, in milliseconds, the toast should take to auto dismiss from when the page loads.\n- `$colour`\n  - Type: `string`\n  - Description: The Tailwind colour class that the component should use.\n  - Note: Only available on the default `Shared` Toastie type.\n- `$icon`\n  - Type: `string`\n  - Description: The SVG path string that the component should use to render the toast's icon.\n  - Note: Only available on the default `Shared` Toastie type.\n\n\u003c!-- Contributing --\u003e\n\n## :bread: Contributing\n\nSee the [contribution guide](CONTRIBUTING.md) on how to get started. Thank you for contributing!\n\nDetailed within that guide are steps on how...\n\n- ... issues should be used.\n- ... to setup the project.\n- ... branches should be used.\n- ... commits should be formatted.\n- ... pull requests should be submitted.\n- ... build in project tooling; Make, Docker, testing, test coverage, static analysis and linting.\n- ... the build process works and the automation that drives it.\n\n### :toolbox: Project Tooling Quick Reference\n\nThere are quite a few ease-of-use tools in place to help you manage the project, all of which are masked behind [Make](https://www.gnu.org/software/make/manual/html_node/Simple-Makefile.html) and [Docker](https://www.docker.com/) to make using this project as smooth as possible.\n\n```sh\n# Let's get things setup. This will run:\n#  - A Docker Compose build.\n#  - A Composer install via the now built project Docker container.\n$ make setup\n\n# ... happy few hours programming, adding cool new features and smashing bugs ...\n\n# Lets make sure things are formatted correctly.\n# This runs Pint (PHP-CS-Fixer) via the projects Docker container.\n$ make lint\n\n# Lets make sure things are implemented correctly.\n# This runs PHPStan via the projects Docker container.\n$ make stan\n\n# Lets make sure things are still functioning as intended. This will:\n#  - Run Pest (PHPUnit) and ensure all tests pass via the projects Docker container.\n#  - Ensure that we are reaching the 100% code coverage target as part of that process.\n$ make test\n\n# If you want a shortcut to; lint, stan and then test all in one go via the projects Docker container\n$ make all\n\n# Finally, if you need access to the projects Docker container's shell\n$ make shell\n```\n\nThat's about it, go make something cool and submit a PR!\n\n\u003c!-- License --\u003e\n\n## :warning: License\n\nDistributed under the MIT License. See [LICENSE](https://github.com/othyn/laravel-toastie/blob/main/LICENSE) for more information.\n\n\u003c!-- Acknowledgments --\u003e\n\n## :gem: Acknowledgements\n\nUseful resources and libraries that have been used in the making of this project.\n\n- Readme: [Louis3797/awesome-readme-template](https://github.com/Louis3797/awesome-readme-template)\n- Readme: [ikatyang/emoji-cheat-sheet](https://github.com/ikatyang/emoji-cheat-sheet)\n- Readme: [shields.io](https://shields.io/)\n- Logo: [Toast SVG Vector 63](https://www.svgrepo.com/svg/411761/toast) ([CC Attribution License](https://www.svgrepo.com/page/licensing))\n- Design: [Tail-kit](https://www.tailwind-kit.com)\n- Package: [illuminate/support](https://github.com/illuminate/support)\n- Package: [orchestra/testbench](https://github.com/orchestra/testbench)\n- Package: [pestphp/pest](https://github.com/pestphp/pest)\n- Package: [laravel/pint](https://github.com/laravel/pint)\n- Package: [phpstan/phpstan](https://github.com/phpstan/phpstan)\n- Inspiration: (Design) [Tailwind CSS Toast And Notification Example](https://larainfo.com/blogs/tailwind-css-toast-and-notification-example)\n- Inspiration: (Design) [Animated dynamic progress bar](https://tailwindcomponents.com/component/animated-dynamic-progress-bar)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fothyn%2Flaravel-toastie","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fothyn%2Flaravel-toastie","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fothyn%2Flaravel-toastie/lists"}