DEV Community

Cover image for After 20 Years of PHP, I Built the Framework I Always Wanted
Steffen Haase
Steffen Haase

Posted on

After 20 Years of PHP, I Built the Framework I Always Wanted

For more than 20 years I've worked as a PHP developer, building everything from small websites to larger business applications.

During that time I've worked extensively with vanilla PHP, Laravel, and Symfony.

Both Laravel and Symfony are fantastic frameworks. They have large communities, mature ecosystems, and solve problems that would otherwise take months to implement yourself. This isn't an article about replacing them.

It's about why I decided to build something different.

The projects I kept building

Over the years I noticed a recurring pattern.

Many of my projects didn't need an enormous ecosystem. They needed a clean starting point with the essentials already in place:

  • Routing
  • Dependency Injection
  • Authentication
  • Templating
  • Validation
  • Database migrations
  • CSRF protection
  • Rate limiting
  • Logging

I wanted to start building the application immediately instead of spending time deciding which packages, starter kits, or frontend stack I should use.

What I found frustrating

Laravel offers several excellent starter kits, but choosing one often means choosing a frontend ecosystem as well.

  • Do I use React?
  • Vue?
  • Svelte?

That usually brings Node.js, npm, a build pipeline, and another set of tools into the project.

Those tools are great when they're needed. But not every project needs them.

Sometimes I simply want to build a server-rendered application using modern PHP and Twig without introducing an entire JavaScript toolchain.

I found myself asking the same question repeatedly:

"Why isn't there a modern PHP application starter that stays focused on PHP?"

So I started building one.

That project eventually became Beacon. My goal wasn't, and will never be, to compete with Laravel or Symfony.

My goal was much simpler ...

Create a modern PHP application framework that is:

  • Easy to install
  • Easy to understand
  • Easy to configure
  • Built around modern PHP features
  • Secure by default
  • Suitable for real-world applications

Instead of depending on dozens of packages, I wanted a coherent foundation that includes the features I reach for in almost every project.

What Beacon includes

Beacon comes with many of the things I consider essential:

  • Dependency Injection
  • Attribute-based routing
  • Middleware
  • Twig templating
  • Authentication
  • Authorization
  • Validation
  • CSRF protection
  • Rate limiting
  • Database migrations
  • CLI tooling
  • Strong typing throughout
  • PHP 8.5+ support

The emphasis has always been on clarity rather than cleverness.

When I revisit code six months later, I want to understand exactly what it's doing.

What I learned

Building a framework has given me a much deeper appreciation for the engineering behind projects like Laravel and Symfony.

Features that seem straightforward—routing, dependency injection, middleware, sessions, authentication, validation—become surprisingly complex once you build them yourself.

It's been one of the most rewarding software engineering projects I've ever worked on.

I'm looking for feedback

Beacon is open source, and I'd genuinely appreciate feedback from other PHP developers.

I'm not trying to convince anyone to abandon Laravel or Symfony.

Instead, I'm interested in discussing the design decisions, architecture, and trade-offs behind building a modern PHP application framework.

If Beacon sounds interesting, I'd love to hear your thoughts, suggestions, and constructive criticism.

But please keep in mind, Beacon is still work-in-progress and there are still some features in my development pipeline, which I haven't implemented (or finished) yet.

GitHub: https://github.com/SHWorX/beacon

Top comments (0)