Hey folks, as many of you know last week I wrote a micro web framework based on express js in golang, I didn't expect this post would reach so many people, some of you asked me, what are the next steps, what do I expect of this framework?
I confess that at first, I didn't even know what the next steps would be or what I expected from this framework, but I took this week to think about how I could improve it and came up with some ideas.
The first idea and the first step is to change the project architecture, to increase the scalability of the project I thought, what would be the ideal architecture for this project, and for some reasons I preferred to choose the hexagonal architecture implementing it together with the project convention go. But for what reasons?
- 1) Improvement in Maintainability and Evolution of Architecture
The separation between the core and adapters makes the framework more resilient to changes. With GopherLight using a hexagonal architecture:
Scalability and Evolution: New features and functionalities can be added through adapters and ports, evolving the system without changing the basis of business logic.
- 2) Dependency Isolation and Modular Adaptations
As I modularized the framework code well, we can benefit from the hexagonal design by structuring adapters that can be replaced as needed:
Middleware can be developed as adapters, making it easier to add new ones without modifying the core of the framework.
The hexagonal architecture defines clear interfaces and extension points, facilitating the integration of third-party plugins without risk of breaking the main system.
This is what the architecture would look like.
├── core/
│ ├── handlers/
│ ├── interfaces/
│
├── ports/
│ ├── req/
│
├── adapters/
│ ├── router/
│ ├── plugins/
│ ├── middleware/
│
└── logger/
I'm also planning to add support for proxies, like Socks5, with the standard lib it's simple to create a new transport object, pass whatever you want and add proxy support, very useful for APIs that may be running on another machine, perhaps later from a load balancer or even a bastion server.
Another very important thing is the documentation, I'm creating documentation using an astro js template that supports markdown, so I would really appreciate anyone who could help me with this part of the documentation, which I would say is one of the most important parts. Mainly because new people are learning about the framework every day and I haven't documented almost anything yet. For anyone interested in helping me maintain this project, to scale this project, I created a server on discord where you have a voice to help, give tips, interact and everything else, this is the link: link.
If we follow these 3 steps, we will be moving towards scaling this framework more and more. Thank you to anyone who has read this far.
Top comments (2)
I think you just put beginners tag and newbies got very interested in how things work. But honestly, you should not orient your development on how much instantaneous popularity you gain, but looking at months of the feedback of how your thing is used.
Beginners are probably the worst to tell you how good and/or useful something is - for obvious reasons.
Don't be silly, don't do something just for audience.
Of course, I'm going to do it calmly, I haven't even left version zero yet, there's a lot of ground ahead (I hope), I want to make the framework scale as much as possible. Thanks for the tips