As I have had several issues with fully understanding, and applying, domain driven design, I would like to take this opportunity to invite anybody who has any experience with it at all, to participate in an real world exercise. The results will be implemented in my forum application, and each participant will each get credit in the readme and about page.
To start with, I will assume the role of domain expert (lol) and begin by listing the user stories. We can proceed from there.
Caveat: this system (currently) will be using the ADONETDB user management system.
Forum Entity User Stories
Forum may be created, and operations may only be performed, by a user with the Administrator role.
There must be a way determine display order, or sequence, of forums.
A forum must have a title, unique when compared to others with the same parentid.
A forum may optionally have a description.
A forum is considered a category if it’s parentid is 0.
A forum may be marked as enabled or disabled, effectively turning on or off the ability to post new threads and replies.
A forum may be marked as visible or hidden. Navigation to a hidden forum is still allowed if the user knows the correct url.
A forum should maintain a collection of subforums.
A subforum must be unique, and added to only one parent at a time.
A subforum may be removed.
A subforum may be moved to another parent, or set to no parent (making it a category).
A forum should maintain a collection of threads (posts where forumid == id and post is not a reply to another post).
Before I go on to additional entity user stories, let’s try to define what we have so far in code.
Please post your takes on this. I’d like to see several suggestions if possible to compare and see where the strengths and weaknesses in each lay.