ralphjsmit / tall-install
Quickly scaffold a new Laravel-installation that uses the TALL-stack and install several opinionated packages.
Installs: 1 581
Dependents: 0
Suggesters: 0
Security: 0
Stars: 44
Watchers: 3
Forks: 10
Open Issues: 4
Requires
- php: ^8.0
- illuminate/contracts: ^8.73|^9.0
- ralphjsmit/filesystem: ^1.2
- spatie/laravel-package-tools: ^1.9.2
- symfony/filesystem: ^6.0
- symfony/process: ^5.0|^6.0
Requires (Dev)
- nunomaduro/collision: ^5.10|^6.0
- orchestra/testbench: ^6.22|^7.0
- pestphp/pest: ^1.21
- pestphp/pest-plugin-laravel: ^1.1
- pestphp/pest-plugin-mock: ^1.0
- phpunit/phpunit: ^9.5
- ralphjsmit/pest-plugin-filesystem: ^1.0.4
- spatie/laravel-ray: ^1.26
This package is auto-updated.
Last update: 2024-10-09 20:48:38 UTC
README
Easy command to install the TALL-stack & jumpstart developmentπ
This package provides a simple artisan command for Laravel that can fully scaffold your application and jumpstart development.
It basically runs the installation process for all of your favourite packages, so that you can start developing right away!
β‘οΈ Check out the release article and subscribe to my newsletter for updates
Demo projects
π Check out a demo-project file's structure
π Check out a demo-project with an automatically generated Domain-Driven file structure
Features
- It runs the regular installation process for your favourite TALL-tools, so that you don't have to π
- Install Pest instead of PHPUnit βοΈ
- Configure a Domain-Driven file structure (DDD)β¨
- Install Browsersync for Valet users β‘οΈ
What does it install?
- Tailwind CSS
- Tailwind CSS Forms
- Tailwind CSS Typography
- Alpine.js
- Alpine.js Trap
- Filament Admin Form Builder
- Filament Admin Table Builder
- Laravel Livewire
- Toast TALL-notifications
What can it install?
This package can also do the following things for you:
- Configure Browsersync for Laravel Valet users
- Install Pest testing framework instead of PHPUnit
- Configure a DDD-file structure.
Roadmap
- Fortify installation
The intention of this package is to do all the backend installation and not force you into anything frontend-wise.
Missing your favourite package? Feel free to submit an issue or a PR with your proposal.
Contents
Installation & usage
To get started, you need a plain Laravel installation:
laravel new name
# or
composer create-project laravel/laravel name
Install the package via composer:
composer require ralphjsmit/tall-install
Now run the tall-install
command:
php artisan tall-install
# Run this to reindex potential changes in classes.
composer dump-autoload
You can use the following flags to install a particular package.
Note: you can only use this command on a plain Laravel installation. Otherwise I cannot guarantee the correct result.
Configure DDD with tall-install --ddd
You may use the --ddd
or -d
flag to configure DDD:
php artisan tall-install --ddd
I think this is the most powerful feature, as it rewrites your /app
directory to this:
src/Support
βββ App
βββ Console
βββ Exceptions
βββ HTTP
βββ Providers
βββ Application.php
βββ Models
User.php
βββ View/Components/Layouts
App.php
Admin.php
src/Domain
// Add your own 'domains' here. Domains are where the business logic of the application is.
βββ Invoices...
βββ Customers...
src/App
// Add your own 'apps' here. Apps are the exposed to the outside (like APIs, a dashboard, a separate admin panel) or are your infrastructure (jobs).
βββ Console
βββ Jobs
βββ Api
For me, once I started using DDD I never wanted anything else. A good reference is the Laravel Beyond CRUD course by Brent Roose.
Install Pest with tall-install --pest
You may use the --pest
or -p
flag to configure Pest:
php artisan tall-install --pest
Install Browsersync with tall-install --browsersync
You may use the --browsersync
or -b
flag to configure Browsersync for Laravel Valet:
php artisan tall-install --browsersync
This will append the following code to your webpack.mix.js
file:
/* Browsersync configuration with Laravel Valet */ mix.disableSuccessNotifications(); const domain = 'valetDomain.test'; const homedir = require('os').homedir(); mix.browserSync({ proxy: 'https://' + domain, host: domain, open: 'external', https: { key: homedir + '/.config/valet/Certificates/' + domain + '.key', cert: homedir + '/.config/valet/Certificates/' + domain + '.crt' }, notify: false, //Disable notifications })
By default it takes the current folder name as the domain for Valet. You may specify a custom domain with the --url
flag:
php artisan tall-install --browsersync --url=custom.test
Cleaning up
You can remove the package from your Composer dependnecies after you've run the tall-install
command:
composer remove ralphjsmit/tall-install
General
π If you spot a bug, please submit a detailed issue and I'll try to fix it as soon as possible.
π If you discover a vulnerability, please review our security policy.
π If you want to contribute, please submit a pull request. All PRs will be fully credited. If you're unsure whether I'd accept your idea, feel free to contact me!
πββοΈ Ralph J. Smit