goauth2
goauth2 copied to clipboard
Plans for the project
Came here via the videos which I absolutely loved! I am a Go noob, who's looking into building a fediverse app based on GoFed activity
library. Prior to that I'd been looking to do that in a NestJS DDD/CQRS-style architecture, using nestjs-cqrs module.
In the video you mention further work on the app, maybe as reference impl and production-ready OAuth2, but I notice that most commits date from the time of the videos. Do you have further plans with this?
Some things I'd like to mention:
- I'd add some topics to the repo, like 'cqrs', 'ddd', 'event-sourcing', 'eventstore', etc. for findability, as well as a mention of "DDD" and "CQRS" in the project description.
- These great videos should not be missed. I'd add their links to the README.
Regarding the code:
- Seemed to me the process manager concept touched really close to that of Sagas in DDD-terminology.
- The project is a great candidate for breaking out the DDD/CQRS concepts to their own library (like NestJS did) and save other some of that "boring work" you talked about.
- Project could benefit from an intuitive 'clean architecture' folder structure, especially for larger DDD apps.
- With your BDD setup you come real close to Cucumber-style testing where your Gherkin feature description is text-only, and read by the code.
Edit: There is a cucumber impl in Go actually I now see: godog
Thanks @aschrijver for the comments.
A trimmed-down CQRS example can be found here and here. That includes a Go CQRS library for building event sourced applications. My plans are to migrate goauth2 to leverage that library, then release version 1 when the project is ready.
I have added time on my calendar to add some documentation linking to those videos and resources.
This is super! I am delighted to hear that.
I have another discussion ongoing with some real fine Go experts (the lead dev of go-fed) about Clean Architecture and project folder structure, that you'll probably find very interesting and on-topic. Here's the issue:
https://github.com/eminetto/clean-architecture-go-v2/issues/3
PS. I actually just mentioned your video. I've been recommending it in many places already :)