Hello all,
I'm sharing here a project I am working since quite some time now:
http://empower.sh. This is intended to be a backend framework usable by any developer, with only basic knowledge of Golang.
It goes way beyond micro-framework like micro or gin, and is not a monolith like Buffalo. It is heavily inspired by the
Odoo framework, an ERP I used for more than 10 years and which is one of the most productive and underestimated back-office framework out there but with one caveat : it's also a monolith. With the Empower stack I want to keep the same productivity but with micro-services patterns, so each teams can be fully autonomous and manage their own services.
My goal is to build libraries to manage CRUD operations in a micro-services context, for example we can define in a model X a many2one field linked to a model Y in another service. When we create a new X, the libraries will request the other service to check that the Y referenced in the many2one field exist.
This is only a simple example, CRUD in micro-services are complex to manage, yet common this is why I think we absolutely need libraries to manage them and share the work.
To be as productive as possible, I need each services to follow standard pattern for their inter-communications. This is where I heavily use gRPC, to fight network latency and ensure a speed as close as possible from a monolithic ERP framework.
Also, Protobuf is used as a first-class citizen inside the ORM itself, so we can serialize the model at any time and there is no transcript needed when building the gRPC request. And I extensively use code generation, to avoid the effect "you use the framework, you learn the framework, not the language".
Thanks for your attention, I hope you'll enjoy this PoC.