I used Spring Data to implement the Repository pattern for the separation of concerns.
I learned the concept of idempotent operations. They give the same outcome no matter how many times they get run.
POST is not an idempotent operations.
The 201 CREATED status code should return a Location header in the response.
JavaScript
I used the includes and filter array methods.
I used the e.target.id and .parentElement to target clicked elements and their parents.
I used the radio and checkbox input types to provide options.
I used the add and remove methods of classList
I used querySelector and getElementsByClassName for more powerful grabbing of elements.