types-ddd
types-ddd copied to clipboard
About v3 and v4 - Deprecate v3?
@4lessandrodev Before starting, please feel free to reach out to me for any improvement requests.
And once again, a huge thank you for your work and for this library, truly! I use it in many projects and on a daily basis.
Here are some ideas for improvements and greater clarity.
Dependency Management
So, I don’t know exactly how Lerna works (I’m a user of Turbo created by Vercel), but for example, with Turbo, you have two strategies for managing dependencies:
- Either you assume that all your packages can access your dependency (in this case, rich-domain), so you just need to add the dependency in the root
package.json
(and not in the individualpackage.json
files of the packages). - Or the dependency is used only by one package (or 2 or 3, but not all packages), in which case, you should add the dependency only in the
package.json
of the specific package (and not in the globalpackage.json
of the repository).
For version 4, I noticed that all your packages contain rich-domain except the logger
package. If you were using Turbo, it would be wise to remove the rich-domain dependency from the packages and keep it in the root package.json
of the repository.
Even if logger
could technically use rich-domain (which wouldn’t make sense), it won’t affect the build or the size of this package's build.
I don’t know if Lerna adopts the same strategies as Turbo, but if it does, I would advise keeping the dependency only in the root package.json
, which will make version upgrades easier instead of having to change every package.json
.
Managing v3 and v4
If v3 and v4 offer the same features and it’s just a matter of restructuring the repository into packages, then it might be wise to consider deprecating types-ddd
and communicating the migration to @type-ddd/core
, to stop maintaining both versions. If necessary, you could provide documentation for migrating from v3 (types-ddd
) to v4 (@type-ddd/core
).
Example App Based on types-ddd
and @type-ddd/core
I’m not sure if it would be beneficial to consolidate your example repositories (finance-project-ddd, simple-ddd-app-example, ddd-app, ddd-demo-youtube) into an examples
folder in your repository or to add links to all these repositories in your documentation (currently, only the link to ddd-app
is there).
Because from my own experience, I had to look through your GitHub profile to find the examples and see how each mechanism of your library works in different contexts (especially to implement a Domain Events system with Redis Queue or SQS in my use case).
What do you think about that?
Originally posted by @GaetanCottrez in https://github.com/4lessandrodev/type-ddd/issues/444#issuecomment-2367596702