I just wanted to build a PHP framework myself and understand more of what happens underneath the frameworks I use every day.
The first version was simple. I wasn't trying to build something that could compete with existing frameworks. I was mainly interested in the process of building one.
Some parts were there from the beginning. Others came later. But almost everything has evolved and improved along the way.
Middleware Authentication APIs Sessions Caching Testing Localization Validation Service Providers Exception Handling Relations & Pagination Admin Features
A big part of it was going back to things I had already built and asking: Can this be simpler? Does this belong here? Is this really the responsibility of this class?
Instead of continuing to add more code to it, I split its responsibilities into smaller components such as:
RouteRegistrar RouteRegistry RouteMatcher MatchedRouteDispatcher RouteInvoker
As Green moved toward v2, more attention went into the architecture and developer experience.
Service Providers became a native part of the framework Database and relation handling evolved Exception handling became more consistent Routing became more structured Testing increased Session handling became safer Session IDs are regenerated after login Sessions can be invalidated where needed
They came from actually working on the framework and finding things that needed to change.
What I like about looking back at the releases is seeing how much changed between the first version and the current one.
A small experiment turned into a framework with its own structure, conventions, and ideas.
You can also check the source code and documentation on GitHub: Green Framework on GitHub
One of the best parts of this journey was getting the chance to use Green in a real production environment.
That's probably one of the biggest differences between building something as an experiment and building something that has to work for a real application.
There are still things I want to improve, features I want to build, and architectural decisions I want to revisit.
But looking back from v1 to the current release, I'm happy with how far the project has come.
