Git Product home page Git Product logo

bdd-ddd-es-affordance-training's Introduction

BDD, DDD, Event sourcing, Affordance training

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)

Documentation

  1. I started by working on gherkins
  2. Then, tried to discover affordance tools
  3. Working on an architecture schema
  4. Service development with BDD, DDD, event sourcing, affordance
  5. Added docker
  6. Worked on a React Starter
  7. I start to work on front

Next steps

  1. Try to implement a front-end to be compliant with it
  2. Make the whole app works 🎉
  3. Try to work on another example -> Provide me ideas with issues

Ajouter une fonctionnalité (service)

  1. Ajouter le / les acceptance tests (au format Gherkins) dans resources/features
  2. Écrire les Specs associées, proposées par l'auto-completion sur IntelliJ (Choisir Java), avec le code associé
  3. 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...
  4. 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é
  5. 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)
  6. Dans notre cas la Todolist est une projection, ceci va apply l'événement à elle même, il faut créer cette fonction associée.
  7. le State doit lui aussi muté pour accueillir ce nouvel événement et ce l'apply. Cf. TaskState
  8. Attention à bien ajouté les classes telle que le UseCase à la configuration Spring dans le domaine et les tests.
  9. Maintenant vous pouvez passer au dévelopmment de l'infra, Resource pour entrer dans le domaine (endpoints), Repository pour en sortir.

Architecture

Architecture documentation.

Local

For now this application is just a back office.
The easiest ways to test it is :

Docker

Install Docker Desktop

docker compose up

to run front and service.
Else you can run each service independently by running dockerfiles directly.

bdd-ddd-es-affordance-training's People

Contributors

dependabot[bot] avatar gabbloquet avatar

Watchers

 avatar

Forkers

jjhw

bdd-ddd-es-affordance-training's Issues

Bloquer la location pour les téléphones jetables

Context

Dans l'objectif de lutter contre la fraude, nous avons décidé de commencer par la lutte contre les téléphones jetables car grâce à la data, nous avons estimé à 20% les reductions de fraude que nous pouvons éviter.

Feature

En tant que ... TODO
Je souhaite ... TODO
Afin de ... TODO

En tant que risk manager
Je souhaite bloquer la location pour les clients ayant un téléphone jetable
Afin de diminuer l'exposition au risque de l'entreprise

Critères d'acceptance

Scénario: Prix du véhicule élevé
Etant donné Mr "Tapie" propriétaire d’un téléphone jetable
Et une "Porsche Tycan" à 1200€ par mois
Quand Mr "Tapie" demande à louer une "Porsche Tycan"
Alors sa demande de location est bloquée
Et Mr "Tapie" est informé "Numéro de téléphone incompatible"

Scénario: Prix du véhicule bas
Etant donné Mr "Roquancourt" propriétaire d’un téléphone jetable
Et une "TWINGO E-Tech" à 100€ par mois
Quand Mr "Roquancourt" demande à louer une "TWINGO E-Tech"
Alors sa demande de location est validée

Luter contre la fraude

Context

Dans un souci de rassurer les investisseurs, nous voulons mettre en place un système de validation des locations.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.