Now that I’ve been actively developing applications with the Laravel framework for a few years, I thought I’d write down the tools and services I tend to use on a regular basis in that work.
I’ve spent a fair amount of time researching and experimenting with these tools and their alternatives in order to make a choice, so maybe it will help someone else who hasn’t gone through that yet. I’m always glad when others share details about their development environments so that the rest of us who are just getting going can build on that foundation.
Hardware and Development Environment
- MacBook Pro 13″
- PhpStorm with Laravel Idea
- Laravel Valet
- Git and GitHub
Launching a New Project
composer global update laravel/installer laravel new example-app --git --branch="main" cd example-app valet link valet secure example-app
Then I create a database, add the DB info in .env
, run artisan migrate
, and I’m ready to develop. Sometimes I have to make sure PhpStorm has the right coding standards and PHP Code Sniffer config in place.
Sometimes I add a .psysh.php
file to my project repo with these contents:
<?php DB::listen(function ($query) { dump("[{$query->time}ms] {$query->sql}"); if ($query->bindings) { dump($query->bindings); } });
When using artisan tinker
, this prints out any SQL queries that were run by a given command within the tinker session, for faster debugging.
For WordPress projects, I use a customized version of this “valetpress” bash script to initialize new projects.
Frequently Used Packages
- If I’m creating a package I want to be re-usable across Laravel projects, I start with the Spatie package skeleton that incorporates their Laravel package tools. Here’s a nice video that introduces these tools.
- Laravel Telescope for troubleshooting and optimizing
- Laravel Jetstream for application scaffolding, user authentication and session management
- Laravel Queueable Action from Spatie for queueable actions
- Laravel Has Many Deep and Laravel Merged Relations from Jonas Staudenmeir
- Filament or Laravel Nova for building admin interfaces
- Laravel Spark for SaaS subscription management
- Laravel Feed from Spatie for generating RSS feeds
- SEO Tools for Laravel for SEO basics
Hosting and Deployment
- For simple or low-traffic apps, I deploy them to an Ubuntu + Nginx server on Digital Ocean. Once the site is set up initially, I use a simple bash script to manually initiate deployments of code updates. If I were doing this at any larger scale or on multiple servers, I’d probably use Laravel Forge.
- For more complex or high-traffic apps, I deploy them to Amazon Web Services using Laravel Vapor. I’ve written more about how much I like Vapor and what it costs. I use a version of this GitHub action to further automate deployment through Vapor.
- Uptime Robot for application uptime monitoring
- Plausible for analytics
That’s the list for now. If you’re a Laravel developer and have any questions or suggestions, please leave a comment below!