Assistdone is the outcome of my final project. In it, I tried to implement Domain Driven Design (DDD), Command-Query Responsibility Segregation (CQRS), and Behavior-Driven Development (BDD). You can say that I tried to kill three birds with one stone.
Of course, to implement those all, I needed a domain. For that, I chose Getting Things Done (GTD).
There are five core components, each has its respective directory. To get better view, here's the simple relationship diagram for the final product:
+----------------------+ | UI/Application | | | | +----------------+ | | |AssistdoneMobile| | | +----------------+ | +----------------------+ / \ / \ # # +--------------------------------+ +--------------------------------+ | Domain Model | | Infrastructure | | | | | | +--------+ +------------+ | | +-------+ +------------+ | | |GtdStuff| |GtdInventory| | | |Badulik| |Time library| | | +--------+ +------------+ | | +-------+ +------------+ | | \ / |---#| | | # # | | | | +-------------+ | | +-------+ +-----+ | | |GtdDefinition| | | |Java ME| |JSON | | | +-------------+ | | +-------+ +-----+ | +--------------------------------+ +--------------------------------+
This component models basic representation for GTD.
This component models the GTD processing and its Stuff lifetime.
This component models the GTD inventory. Because GTD inventory has the same concept as Query, it also contains the Query logic.
This component doesn't appear on the above diagram because it's not needed in the final product. However, this component plays important role in validating the Domain Model representation of GtdDefinition, GtdStuff, and GtdInventory.
This component acts as the "glue" for everything.