Challenge Overview
In this challenge, we are looking for you to develop part of APIs that is going to support for Hestia Control Center web application.
Background
Hestia is a wholesale distributor of a variety of plumbing and building-related products. Hestia Control Center will be an internal application that will help Hestia modernize their current spreadsheet process and allow their employees better access to data for reporting and analysis.
The application frontend interface will be built based on the previous designs and Angular styling package. It will integrate with backend APIs, which providing data for rendering. The API Definition is already created, you are expected to implement based on API Definition.
Technology Stack
- Java 11 (OpenJDK)
- Spring Framework 5.x https://spring.io/projects/spring-framework
- Spring REST
- Spring Boot
- Spring Data / Hibernate
- Azure SQL Database (not SQL Server)
- Maven
- JSON
- Log4j
Codebase Access
This is the start of a new project (for backend API), so you will be creating the base code in this challenge. The project should be a Java project using maven for dependency management.
Application Design and API Definition
- The Marvelapp prototype is provided in the Forum
- API Swagger Spec are provided in forum
General Requirements
For each API, it should properly validate the requests, and return properly response for validation error, or success.
Authentication and Authorization is out of scope. Will be implemented in later challenge. But described following for implementation consideration. Make sure your code can be easily changed to support it.
Each API is authentication with a token, generated by Active directory to denote the current user, there should be general logic for parsing and validating the token, and properly authorize access.
There are three different roles for each API call, the API should properly handle that.
-
Associates
-
Approvers
-
Admins
APIs to be implement
Ideally, the database will be determined by authorization token, but for this challenge, it will be fixed, since authentication and authorization is out of scope.
Dashboard
-
GET /schemas
-
GET /schemas/:schemaName/tables
-
GET /schemas/:schemaName/tables/lastChanges
-
GET /schemas/:schemaName/tables/:tableName/lastChanges
Table Management
-
GET /schemas/:schemaName/tables/:tableName/metadata
-
GET /schemas/:schemaName/tables/:tableName/data
-
POST /schemas/:schemaName/tables/:tableName/data
Final Submission Guidelines
-
Submit the zipped source code for the application
-
Submit a deployment and verification guide
-
Submit the updated Swagger file & a postman collection for the api
-
Submit the database scripts for validation