Skip to content

Solution folder structure

Edwin van Wijk edited this page Mar 1, 2020 · 3 revisions

The src folder contains several files and sub-folders. Most folders correspond to a component in the solution architecture. Look there for an in-depth description of the functionality of a component.

In all the descriptions on this wiki, I assume that you are working from Visual Studio Code.

  • Files
    • ClearDatabases.sql : a sql script to empty all the SQL databases of the solution.
    • docker-compose.yml : the docker-compose file for the application.
    • RebuildAllDockerImages.ps1 / RebuildAllDockerImages.sh : do a docker build of all the projects in the solution.
    • RemoveUnusedImages.ps1 / RemoveUnusedImages.sh : removes "dangling" docker images (without a name).
    • StartSolution.ps1 / StartSolution.sh : run the project in the background, and start tailing the logs for all the containers. You can crtl-c from viewing the logs, and the the containers keep running.
    • StartSolutionWithLocalAPIs.ps1 / StartSolutionWithLocalAPIs.sh : run the project in the background and publish the ports of the API services to localhost for easy acces to their swagger UI. When using this script, scaling API services to multiple instances is not supported (a port can only be exposed once on localhost).
    • StopAndRemoveAllContainers.ps1 / StopAndRemoveAllContainers.sh : stops and removes all containers.
  • Folders
    • AuditlogService : the AuditLog service.
    • CustomerManagementAPI : the Web API for managing customer data ("CRM").
    • Infrastructure.Messaging - an infrastructural library that offers messaging capabilities using RabbitMQ.
    • InvoiceService - the service that sends invoices for executed maintenance.
    • K8S - the scripts for running the application using Kubernetes.
      - Istio - scripts for running the application with an Istio service-mesh on Kubernetes.
      - Linkerd - scripts for rnuning the application with an Linkerd service-mesh on Kubernetes.
    • NotificationService - the service that sends customers a notification when they have an appointment.
    • TestUtils - utilities used in Unit- and UI-tests.
    • TimeService - the service that lets "the world" know a certain period of time has passed. The current implementation only supports days.
    • UITest - UI tests (using Selenium) for integration-/regression-testing.
    • VehicleManagementAPI - the Web API for managing vehicle data.
    • WebApp - the front-end web-application used by the end-users of the system (employees of PitStop garage).
    • WorkshopManagement.UnitTests - the unit-tests for the WorkshopManagement domain.
    • WorkshopManagementAPI - the Web API for managing workshop data.
    • WorkshopManagementEventHandler - the event-handler picking up events and creating the read-model for the WorkshopManagement bounded-context.