DEV Community

Discussion on: What topics can I cover in my Golang Youtube Channel

dzintars profile image
Dzintars Klavins

I think one of the most uncovered and hardest parts is project architecture.
So many people spending days and weeks or months to figure out some +/- good project structure/architecture to just simply start with.
I am not talking about The Perfect One as there is no such.
All I seen is "...well... it depends." kind of statements and none of them provide reasonable entry point. "Start simple" and throw everything in main.go is not a solution even for newcomers.
From my personal experience, I learn much much faster, when I have well structured base project on front of me. Repositories, models, services, handlers... this helps me to clearly see/learn the data flow and understand relations. And it allows to extend/experiment on each separate part.
And yet... everybody is afraid to provide at least some reasonable starting point. Probably because of fear to be criticized about decisions, naming, organization... I don't know the reason.
Most examples I seen are somehow incomplete or shared by people who still has no solid knowledge in this topic.
My assumption is that this is because this topic is kinda from "production" world and those who work on real-world projects with real-world architectures has no time and willingness to share their knowledge as it is pretty complicated topic. You can't simply write single blog post to showcase whole approach with reasonable examples.

Personally I am still "digging"/researching towards Hexagonal/Ports&Adapters/Clean/Onion..., but I didn't seen any good MONOrepository (+ Go Modules) containing multiple services, domains, entities with good naming, file organization, build config etc...

So.. from my personal perspective I would love to see approaches/methods to architect/setup the midsize project with multiple domains (Projects, Customers, Orders as example). Where whole project is composed of multiple microservices(binaries) (Front, API GW, Command Handlers and Query Handlers as example) and which incorporates Go Modules and probably gRPC for interservice communication.