Hi Magbic, thank you very much for your response. I'm really glad you took your time to read through my article.
About the issue you pointed out, do you mean the confusion came from the existence of the
CounterGateway interface? If it's the case, it's done for Dependency Inversion.
It's a somewhat complicated world, the architecture one. Lots of complicated abstractions and lots of thinking in order to measure the complexity tradeoffs. I'm currently wrapping my head around different models (such as the Hexagonal Architecture) so I can finish my degree project on web apps architecture. I hope I can come up with something useful for the community!