Based on the use of the Spring Boot framework, which offers a set of REST access points aimed at allowing the saving and access to sequences of geographical locations of individual users, according to the following requirements: User authentication is managed through the use of Spring Security and theOAuth2 protocol by appropriately configuring the endpoints needed to request an access token based on JWT (JSON Web Token)
Defined three different roles for the control access: ADMIN, USER, CUSTOMER. Users with the ADMIN role can access all data stored by USERS and CUSTOMERS. Users with the USER role can save and later retrieve their data. Users with the CUSTOMER role can retrieve the number of positions present in an area delimited by a polygon in a given time interval, and subsequently decide whether or not to purchase the positions by recording the transaction;
if this happens it will be necessary to attribute to the users who have provided the individual data a fraction of the price paid proportional to the amount of data actually purchased (as part of the logic, the transaction is simulated and no money exchange takes place)
Each user has a personal profile page where he can recharges its personal wallet.
Used MongoDB to save data and perform geographic queries to determine the locations belonging to a given area.
Packaged the application using maven and create a Docker container to host it.