FilamentPHP is a next generation and full stack package (TALL), it’s really great and easy to use for your admin panel and CMS.
Laravel backpack
In 2016, when I was a SOHO, I used Backpack as my main stack to build projects for my customers. It’s really flexible and customizable if you understand the author’s design philosophy. I could add any packages and functions I wanted into these projects created with Laravel Backpack. I could handle Blade and all of JavaScript if changes were needed. Based on traditional server-rendering Blade, I could solve most problems for my customers.
The End of Backpack
Don’t be confused; it’s still a really good tool and out-of-the-box package in 2024. But why don’t I use it? I just needed to separate my front end and back end, which means I use an API-based design for my next projects. In other words, I can assign the front end to other engineers and focus on API development to deliver as soon as possible. Unfortunately, Laravel Backpack cannot do that for me, so I reverted to basic Laravel and dived deeper into Laravel and HTTP.
Pros
- Easy to customize Blade pages
Cons
- Monolithic architecture
- Multiple tech stacks in the project
Laravel Nova
A couple of years ago, I used Laravel Nova for the company CMS and admin panel project. It’s really nice and suitable for that, and it is supported by the official Laravel team. Speed and modular customization, everything is good. Just one thing concerns me: pricing and version upgrades. Also, I think because it is a paid package, the community and plugins are limited, so you need to develop a lot by yourself. Fortunately, it is not too hard to do, but it still takes some time because you have to know Vue, Laravel, and Nova’s design philosophy.
Pros
- Laravel team support
- Frontend/backend standalone
- Speed and performance
Cons
- Ambiguous versioning and pricing
- Knowledge of Vue, Laravel, and TailwindCSS required
- Breaking changes in minor versions
FilamentPHP
I used FilamentPHP for my side project. At first, I learned a lot about Livewire because FilamentPHP is based on Livewire’s philosophy. I must say it helped me build the project quickly! There are also tons of plugins and components I could use. I developed the project for 4 months and didn’t face any major problems. Sometimes there were a few bugs with Livewire or components needing extensions, but they weren’t too hard to deal with. Recently, I encountered some issues and decided that FilamentPHP is best for admin panels, not highly customized projects. Here are the problems I faced:
- Model first: FilamentPHP queries are based on query builder and model, which makes sense, but sometimes I need to use a collection to filter or append something before pushing it into a component. I use accessors and mutators to do this, but it doesn’t feel like the best way.
- Speed/performance: This is a significant point for Livewire and FilamentPHP. Although FilamentPHP solved n+1 and query problems, users reported that the experience wasn’t smooth when querying large tables or fetching data. Debugging didn’t reveal any issues, so I think it might be due to Livewire and the rendering of multiple components.
- Customization: Because FilamentPHP is based on a model-first philosophy by default, I need to spend a lot of time customizing. Creating new components and Livewire components requires effort.
Pros
- TALL stack - great for admin panels and side projects, a good start
- Easiest to learn and use that I’ve ever seen
- Beautiful design and consistent development experience
Cons
- Livewire philosophy
- Performance
- Model-first by default
Conclusion
I decided to use FilamentPHP for my admin panel and CMS because it’s so flexible and easy to develop with. Also, I don’t prioritize performance for user experience in this context. For front-facing customer applications, I will use an API-based approach because I need to consider performance and user experience.