Service responsible for managing projects and associated users.
-
A user is required to be logged in to send any requests to the project-service.
-
There are three different Member-Roles:
-
Admin: Every permission for the project.
-
Support: Same permissions as User.
-
User: Add members, change name of project, update issues of project.
-
-
The creator is automatically added with Member-Admin-Role and as Project-Creator
The project service is based on the Spring Framework with Webflux and Netty as its HTTP-server stack and ActiveMQ connections as message broker. The project service is connected to dedicated PostgreSQL database, where data is persisted.
The database holds all information of projects, its members - users associated with a project, and existing user ids for data integrity.
The API is documented as OpenAPI Specification
To test the API please use the Postman collection.
The service sends events when:
-
microservices.dataEvents:
-
Project: Created, Updated or deleted
-
-
microservices.domainEvents:
Extended events with additional information when:-
The role of a user changed (added, updated, removed)
-
The name of the project changed
-
The project service is listening to two ActiveMQ topics:
-
microservices.dataEvents:
This service is interested in creation and deletion events for users within the system to update its local table with user ids. All other events are ignored. -
microservices.sagaEvents:
This service is interested in ProjectDeleteSagaEvents containing results of other services involved in saga transactions orchestrated by this service.
This service is the choreographer for a project deletion saga. Whenever it is requested to delete a project, it saves the data to be deleted and sends an event via "microservices.sagaEvents" - Topic. It subsequently awaits messages marking further steps ("chapters") within the saga.
Please refer to the README of the Orga-Repository for more information. This service uses the service-lib as a dependency.