This repository is a boot camp to try to implement BDD, DDD, affordance.
Firstly, I tried to work on a TODO list example. (Feature examples)
- I started by working on gherkins
- Then, tried to discover affordance tools
- Working on an architecture schema
- Service development with BDD, DDD, event sourcing, affordance
- Added docker
- Worked on a React Starter
- I start to work on front
- Try to implement a front-end to be compliant with it
- Make the whole app works 🎉
- Try to work on another example -> Provide me ideas with issues
- Ajouter le / les acceptance tests (au format Gherkins) dans resources/features
- Écrire les Specs associées, proposées par l'auto-completion sur IntelliJ (Choisir Java), avec le code associé
- Ceci va donc nécéssité la création de nouveaux éléments, comme la commande si il s'agit d'une nouvelle feature, ainsi que du UseCase associé qui catchera la commande, l'événement qu'il va emettre...
- Il faudra ensuite faire le lien entre ces éléments et leurs parents, par exemple une commande de tache devra
extends TaskCommand
et implémenté le visiteur associé - Bravo, votre commande est traitée, elle emet un événement. Maintenant il faut catcher cet élément pour faire réagir les autres sous-domaines de l'application qui doivent l'être. (Exemple,
TaskDeleted
émit, ma todolist doit supprimer l'élément de sa liste) - Dans notre cas la
Todolist
est une projection, ceci vaapply
l'événement à elle même, il faut créer cette fonction associée. - le State doit lui aussi muté pour accueillir ce nouvel événement et ce l'
apply
. Cf.TaskState
- Attention à bien ajouté les classes telle que le UseCase à la configuration Spring dans le domaine et les tests.
- Maintenant vous pouvez passer au dévelopmment de l'infra,
Resource
pour entrer dans le domaine (endpoints),Repository
pour en sortir.
For now this application is just a back office.
The easiest ways to test it is :
- Performs tests ./service/src/test/java (If you use IntelliJ -> Left click ->
Run 'All Tests'
) - Use this postman collection (Copy paste this content in
File
->Import
->Raw text
)
docker compose up
to run front and service.
Else you can run each service independently by running dockerfiles directly.