Assume an application named Cards that allows users to create and manage tasks in the form of cards:
- Application users are identified uniquely by their mail address, have
a role (Member or Admin) and use a password to authenticate
themselves before accessing cards
- Members have access to cards they created
- Admins have access to all cards
- A user creates a card by providing a name for it and, optionally, a description and a color
- Name is mandatory
- Color, if provided, should conform to a “6 alphanumeric characters prefixed with a #“ format
- Upon creation, the status of a card is To Do
- A user can search through cards they have access to:
- Filters include name, color, status and date of creation
- Optionally limit results using page & size or offset & limit options
- Results may be sorted by name, color, status, date of creation
- A user can request a single card they have access to,
- A user can update the name, the description, the color and/or the status of a card they have access to
- Contents of the description and color fields can be cleared out
- Available statuses are To Do, In Progress and Done
- A user can delete a card they have access to
To run and test the application refer to: BUILD.md
For further reference, please consider the following sections:
- Official Apache Maven documentation
- Spring Boot Maven Plugin Reference Guide
- Create an OCI image
- Spring Boot Testcontainers support
- Testcontainers R2DBC support Reference Guide
- Testcontainers MySQL Module Reference Guide
- Spring Data JPA
- Spring Reactive Web
- Spring Data R2DBC
- Liquibase Migration
- Spring Boot Actuator
- Prometheus
- Testcontainers
- Spring Security
- Primary: Joe Alex Kimani
- GitHub: alexkimani
- WakaTime: @joealexkimani