{
"$type": "site.standard.document",
"bskyPostRef": {
"cid": "bafyreia77ahzfmktajttvnpjk3gzogdx4mpeepl2zjqsv5bb4ctqt6rgpm",
"uri": "at://did:plc:25rdn5elo5izoxrmtis34zuk/app.bsky.feed.post/3mpvjrga5kjv2"
},
"coverImage": {
"$type": "blob",
"ref": {
"$link": "bafkreihx67mszzcbdg2hdmrxgxdskrsrtsg5spfaitdmspirwz2aapvbzy"
},
"mimeType": "image/webp",
"size": 119494
},
"path": "/steffen_haase_f0b7bbb25e0/after-20-years-of-php-i-built-the-framework-i-always-wanted-4d1h",
"publishedAt": "2026-07-05T11:44:12.000Z",
"site": "https://dev.to",
"tags": [
"backend",
"php",
"showdev",
"webdev",
"https://github.com/SHWorX/beacon"
],
"textContent": "For more than 20 years I've worked as a PHP developer, building everything from small websites to larger business applications.\n\nDuring that time I've worked extensively with vanilla PHP, Laravel, and Symfony.\n\nBoth 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.\n\nIt's about why I decided to build something different.\n\n**The projects I kept building**\n\nOver the years I noticed a recurring pattern.\n\nMany of my projects didn't need an enormous ecosystem. They needed a clean starting point with the essentials already in place:\n\n * Routing\n * Dependency Injection\n * Authentication\n * Templating\n * Validation\n * Database migrations\n * CSRF protection\n * Rate limiting\n * Logging\n\n\n\nI wanted to start building the application immediately instead of spending time deciding which packages, starter kits, or frontend stack I should use.\n\n**What I found frustrating**\n\nLaravel offers several excellent starter kits, but choosing one often means choosing a frontend ecosystem as well.\n\n * Do I use React?\n * Vue?\n * Svelte?\n\n\n\nThat usually brings Node.js, npm, a build pipeline, and another set of tools into the project.\n\nThose tools are great when they're needed. But not every project needs them.\n\nSometimes I simply want to build a server-rendered application using modern PHP and Twig without introducing an entire JavaScript toolchain.\n\nI found myself asking the same question repeatedly:\n\n\"Why isn't there a modern PHP application starter that stays focused on PHP?\"\n\n**So I started building one.**\n\nThat project eventually became Beacon. My goal wasn't, and will never be, to compete with Laravel or Symfony.\n\nMy goal was much simpler ...\n\nCreate a modern PHP application framework that is:\n\n * Easy to install\n * Easy to understand\n * Easy to configure\n * Built around modern PHP features\n * Secure by default\n * Suitable for real-world applications\n\n\n\nInstead of depending on dozens of packages, I wanted a coherent foundation that includes the features I reach for in almost every project.\n\n**What Beacon includes**\n\nBeacon comes with many of the things I consider essential:\n\n * Dependency Injection\n * Attribute-based routing\n * Middleware\n * Twig templating\n * Authentication\n * Authorization\n * Validation\n * CSRF protection\n * Rate limiting\n * Database migrations\n * CLI tooling\n * Strong typing throughout\n * PHP 8.5+ support\n\n\n\nThe emphasis has always been on clarity rather than cleverness.\n\nWhen I revisit code six months later, I want to understand exactly what it's doing.\n\n**What I learned**\n\nBuilding a framework has given me a much deeper appreciation for the engineering behind projects like Laravel and Symfony.\n\nFeatures that seem straightforward—routing, dependency injection, middleware, sessions, authentication, validation—become surprisingly complex once you build them yourself.\n\nIt's been one of the most rewarding software engineering projects I've ever worked on.\n\n**I'm looking for feedback**\n\nBeacon is open source, and I'd genuinely appreciate feedback from other PHP developers.\n\nI'm not trying to convince anyone to abandon Laravel or Symfony.\n\nInstead, I'm interested in discussing the design decisions, architecture, and trade-offs behind building a modern PHP application framework.\n\nIf Beacon sounds interesting, I'd love to hear your thoughts, suggestions, and constructive criticism.\n\nBut 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.\n\nGitHub: https://github.com/SHWorX/beacon",
"title": "After 20 Years of PHP, I Built the Framework I Always Wanted"
}