What I missed when building an MVP with Laravel

I've been building a small app on the side. It's not for Laravel developers specifically, but if you're curious... it does one thing -...

Cristian Tabacitu
Cristian Tabacitu
Share:

I've been building a small app on the side. It's not for Laravel developers specifically, but if you're curious... it does one thing - it sends emails on a schedule (eg. "every 6 months, email all company employees to change their passwords"). See more on recurrr.com. Anyway...

I haven't built a SaaS myself, in the past few years. I've coordinated people to do it... sure, but haven't done it with my own 2 hands. Now that I have, I've hit some problems doing it, and I'm wondering if you feel the same. So let's dig in!

First of all, what did I want?

  • I wanted to build an MVP for my 3-page app, ASAP, to start getting user feedback!
  • I challenged myself to not use Backpack at all (since the MVP doesn't need an admin panel).
  • I wanted to have as few dependencies as possible; why? because I've built this app before, in 2017; and even though I love it, use it and consider it super-useful, I wasn't able to find people who think the same; if Recurrr has the same fate as ScheduleThatEmail... me maintaining it for 7 years pretty much for free... I want it to be dead-simple to maintain; a few hours every year, tops;

With that in mind... what tools did I need?

  • ✅ a good tech stack;
  • ⚠️ a good UI Kit (aka HTML app template, aka UI building blocks, aka HTML components library);
  • ⚠️ good app starter kit - with login, register, recover password and user profile;

Before I got started, I had high expectations. I expected to find a lot of good tools (✅), to have fun building it (✅) and to learn a lot from it (✅). But I also expected to find a tool that considerably reduces the time I spend on scaffolding. And that... ❌... I did not find. Here was my experience. Eager to hear about yours!

Choices, choices

Tech Stack

I chose PHP, Laravel, Livewire and MySQL. Decided to avoid NPM & JS frameworks like the plague, since those would make the app difficult to maintain long-term.

Using PHP (and PHP alone) has been a pleasure. Even things I dread doing (like writing feature tests) were a pleasure in Livewire! And I absolutely LOVED not having to write much JavaScript. I would 100% use this stack again, and would recommend it to anyone who hasn't tried it.

Conclusion here: Pick Laravel + Livewire for your next project, you won't regret it!

UI Kit? Best to stick to the one you know and love.

Finding a good UI Kit has been A LOT more time-consuming than I expected. Tailwind has democratised building UI Kits (aka HTML templates), but it has also spun so many options, that it's difficult to decide between them. Each one of them has hidden PROs and CONs, and there's no clear leader. Add another layer of having those designs put into Blade components and... wow. So many options, so few of them are actually great 😔 I've ended up in "analysis paralysis".

After too many hours of research, I've decided none of the "new kids on the block" were using, and it's best to stick to what I know, the "big ones". It was between:

  • TailwindUI, which I had purchased a few years ago;
  • Flowbite, which I had used a few months ago;
  • Tabler, which I had used quite a few times.

I think TailwindUI is beautiful, and I had already purchased it years ago. But I found it was still missing some components that I think are must-have (eg. datepicker). Which wasn't the case with Flowbite and Tabler - they have tons of components, and include the needed JS. In the end, I picked Tabler, because I wanted to avoid using NPM. But it was a tough call! I could just as well used Flowbite with static Tailwind. But I'm still a bit uncomfortable with that, it seems a bit like a hack.

Conclusion here: Pick Tabler or Flowbite for your app UI. Ignore the others.

Starter kit? None was "good enough".

This was a difficult decision as well. 3rd party options all seemed unmaintained or low quality. And yes, Laravel has three options (many!), but: - UI has Bootstrap support, but is legacy software; - Breeze has a decent feature set, but pushes me into using Tailwind; - Jetstream forces Tailwind down your throat too, and has too many features I don't need;

Even though each of them has multiple stack options, none of them were exactly what I needed... a simple, no-JS base to build my app on. So... I've ended up using Laravel Breeze, and customizing the HTML to use Tabler. The problem is... after all that work, I ended up with something that was a better fit for me (yes)... but still somehow incomplete.

Conclusion here: Use Breeze or Jetstream, but expect to budget time to customize ALL of the blade files for your UI kit.

Conclusions

So yeah, that was my experience, the first few days of building a new SaaS on Laravel. Everything after that... went super-smooth, you can read about that in my twitter thread.

In the end... I built my app MVP in 16 days. Which is pretty decent! But looking at my notes, I could have saved up to 7-8 days of development (🤯) if I had a "SaaS Starter Kit" that actually included:

  • UI Kit - many HTML components to choose from (for my app pages);
  • App Starter Kit - login, register, forgotten password, user profile;
  • Livewire Components - form & simple datatable;

Let me rephrase that... had I had a "Premium SaaS Starter Kit", I would have finished building my app in half the time!. The closest you can get is to use Tailwind and piece together different UIs and packages, but then... you end up with a bloated mess with various degrees of quality and support. Bleah!

Question

So here's my ask: How was your experience building a SaaS in Laravel recently? What other tools have you used to build a SaaS in 2024, that maybe I didn't take into account?

I'm very very tempted to separate the code I've created, polish it, and provide it to you guys as a starter-kit, library or package. So that you don't waste the time that I did. Do you feel the same? Would you also pay for a "Premium SaaS Starter Kit" where we've made all the right choices and heavy lifting, so you don't have to? Just like you can use Backpack/CRUD for your admin panel, something that could do a lot of the same... for your app? 👀

Eager to hear what you think. Cheers!

Want to receive more articles like this?

Subscribe to our "Article Digest". We'll send you a list of the new articles, every week, month or quarter - your choice.

Reactions & Comments

What do you think about this?

“Would you also pay for a "Premium SaaS Starter Kit" where we've made all the right choices and heavy lifting, so you don't have to?” Absolutely
Awesome! Thanks for letting us know 🙏
It's always good to have starter kits. Especially when it is made by a professional :)
I absolutely love backpack, but in recent months, I've found myself using filament more. Having livewire from the get-go was the main reason I think. A TALL based SAAS would be preferable for me. A google search suggested saasykit and larafast. Never tried those, but I may end up needing to using one of these anytime soon.
That is great feedback, thank you! We have great news then - our starter kit will be using Livewire from the get-go 😉 Already have that on lock, and it's structure is suuper simple. Still uses Bootstrap though, not Tailwind (personal preference). If you're starting a project soon and need a starter kit that uses the BALL stack (Bootstrap, Any-javascript-you-want, Laravel, Livewire) ping me. Even if we haven't made it public, I can share it so you can use it. It's ready but we want to add more bells and whistles.

Latest Articles

Wondering what our community has been up to?