• Makers Make by SaaSykit
  • Posts
  • SaaSykit Reaches 600 Happy Customers! Laravel 11.16-17 Released, Intro to AI: What are LLMs, AI Agents, MCPs & more

SaaSykit Reaches 600 Happy Customers! Laravel 11.16-17 Released, Intro to AI: What are LLMs, AI Agents, MCPs & more

Hey Makers 👋

Hope your week’s been productive, whether you're fine-tuning onboarding, experimenting with pricing, or gearing up for your SaaS launch. 🚀

SaaSykit Reaches 600 Happy Customers! 🎉

I’m incredibly grateful to share that SaaSykit has now reached 600 customers. Thank you all so much for your trust and support!

Your feedback and ideas have been instrumental in shaping SaaSykit into what it is today.

I’m committed to continuing to improve and push SaaSykit even further, more improvements, better docs, and new features to make your developer journey smoother and faster while building your SaaS.

Thank you again for being part of this journey. 🚀

On the other hand, Laravel just dropped some solid updates, this time with a few bigger and genuinely useful features that can seriously level up your codebase.

Let’s dig into the highlights 👇

  • Cast Attributes as URIs with AsUri
    Cast model attributes to a URI object (Illuminate\Support\Uri), giving you a fluent API for URI handling.

use Illuminate\Support\Uri;
use Illuminate\Database\Eloquent\Casts\AsUri;

protected function casts(): array
{
    return [
        'target_link' => AsUri::class,
    ];
}

$link->target_link = new Uri('https://app.example.com:8080/path?ref=code');
$link->save();

  • Contextual Binding with #[Give] Attribute
    Define dependency injections directly using attributes—cleaner than manually configuring bindings in a service provider.

use Illuminate\Container\Attribute\Give;

class InvoiceService
{
    public function __construct(
        #[Give(PayPalProcessor::class)]
        private PaymentInterface $gateway,
    ) {}
}
  • Query Builder reorderDesc()
    Quickly reorder queries in descending order without passing 'desc' manually.

$records = DB::table('logs')->reorderDesc('created_at')->get();
  • New in_array_keys Validation Rule
    Validate that an array has at least one of a given list of keys—ideal for flexible API configs.

Validator::make($request->all(), [
    'settings' => 'array|in_array_keys:token,secret,apikey',
    'settings.token' => 'nullable|string|min:40',
    'settings.secret' => 'nullable|string',
]);
  • Hidden Context in Attributes
    You can now hide context values from being exposed in logs or debug output by marking them hidden.

public function __construct(
    #[Context('currentUser', hidden: true)] User $user
) {}
  • Fluent contains() Rule for Arrays
    Cleaner validation for checking array values using a fluent Rule::contains() syntax.

use Illuminate\Validation\Rule;

Validator::make($data, [
    'tags' => [
        'required', 'array',
        Rule::contains(['news', 'featured']),
    ],
]);
  • Arr::hasAll() for Exact Key Checks
    Quickly verify if an array includes all of the specified keys.

$data = ['username' => 'john', 'email' => '[email protected]'];

Arr::hasAll($data, ['username', 'email']); // true
Arr::hasAll($data, ['username', 'password']); // false
  • Stringable::toUri() for URL Extraction
    Extract and manipulate URIs from within strings using the new toUri() method.

$text = 'Please visit {https://help.example.org/support}';

$url = str($text)->between('{', '}')->toUri();

$url = $url->withQuery(['ref' => 'newsletter']);

return $url->value(); // https://help.example.org/support?ref=newsletter

From the Community

AI, AI, AI — everyone is talking about it these days! And even though it may be overhyped, there are some excellent ways that you, as a developer can use AI right now to get your job done faster and better. But first, we need to understand the basics of AI. If you have only heard these terms, but never understood them - this article is for you! Most important concepts in AI in 2025, broken down in simple terms. Let's go!

I think of caching as one of those double-edged swords in PHP application development.

On one hand, caching strategies can offer considerable gains in performance. On the other hand, those gains may be at the cost of increased complexity within the codebase or infrastructure. Plus, there is always the threat that caching is providing out-of-date data.

Laravel introduces new methods to streamline negative relation queries, making it easier to find records that lack specific relationships while maintaining clean, readable code.

The new whereDoesntHaveRelation methods provide a concise way to query records without specific relations

Laravel simplifies URL validation with the introduction of the Str::isUrl method, offering developers a straightforward approach to verify URL validity with optional protocol restrictions for enhanced security and flexibility.

Laravel's collection system provides the diffKeys method for identifying differences between collections based on their keys rather than values, enabling precise comparison and configuration management tasks.

Generating PDF files is a common task in Laravel projects. The most popular PHP package is dompdf/dompdf. We have a tutorial using the DomPDF package, but it has limitations. Spatie has a modern package spatie/laravel-pdf, for generating PDF files with some features just for that. This tutorial will show how to generate a PDF file using that package.

Exception handling is a critical aspect of web application development, ensuring that your application can gracefully handle unexpected errors and provide meaningful responses to users. Laravel comes with a robust exception handling system that allow you to manage errors effectively. In this article, we will explore the fundamentals of exception handling in Laravel, covering key concepts.

After more than 9 years working with Laravel—leading a dev team and architecting solutions—I still sometimes feel like I’m not doing enough.
Not because I lack technical skills—I’m confident in my ability to solve problems, build scalable apps, and ship clean code—but because I often feel like I’m falling behind.

All about SaaS

Revenue recognition shouldn’t slow your business down—but too often, it does. As a CFO, I’ve seen how rigid systems, compliance hurdles, and manual workarounds make closing the books a nightmare.

We put together this free report outlining the biggest revenue recognition challenges CFOs and controllers are facing—and what the right solution should look like. If revenue complexity is holding your team back, this will help you understand how to fix it.

Today, 47% of US consumers use generative AI for product recommendations. And the number is growing fast, both in the US and around the world.

It is not hard to imagine a future where purchase decisions flow through AI chatbots like ChatGPT, Gemini, and Claude. This goes for everything from consumer products to B2B software. At the present moment, the influence of AI chatbots is one of a handful of meaningful datapoints people collect before they buy.

There are two senses in which writing can be good: it can sound good, and the ideas can be right. It can have nice, flowing sentences, and it can draw correct conclusions about important things. It might seem as if these two kinds of good would be unrelated, like the speed of a car and the color it's painted. And yet I don't think they are. I think writing that sounds good is more likely to be right.

A lot has been written about moats in software. Network effects. Switching costs. Proprietary data. Everyone wants to believe they’re building one. But I’ve come to believe the idea of a “long term moat” is mostly a myth, especially in this market. Moats aren’t permanent. They’re time-bound. At best, they function as a bridge. And companies either use that bridge to reach the next defensible position, or watch their moat get breached.

Continue the article

I speak to a lot of companies that are struggling to grow faster. We’ve all been there! The business is growing, but not as fast as you like, and the pressure to grow faster is building.

The most common reaction is to go big! Spend a lot more on marketing, hire a lot more sales people and other big actions that might have big impacts. I understand why they think this way and I’ve done it myself in the past. You want a quick solution to increase growth and the bigger the action the more it feels like a quick solution.


Videos

Keep building, keep rocking! 🤘

Psst, are you building a SaaS?

SaaSykit is a multi-tenancy Laravel-based boilerplate with everything you need to build an awesome SaaS.