ℹ️
|
We’re using these keywords as described in RFC2119 for MUST , SHOULD and MAY .
|
Please develop an application which fulfills the requirements described below. Push your code to your github profile (PRIVATE Repository) and invite following users to the repo.
-
❏ An application which exposes one endpoint (MUST be a REST endpoint) to shorten a url. The backend responds with a shortened URL.
-
❏ If the shortened URL will be called by a caller, the application performs a redirect to the registered URL.
-
❏ The registered URL MUST be persisted to survive application restarts.
-
❏ Each click event on the shortened URL MUST be counted and stored with the fields (
timestamp
,IP
,user agent
,referrer
). Ideally an aspect (AOP) will be used to instrument the endpoint to count the clicks. -
❏ The application MUST provide an endpoint to retrieve the click events for a given shortened URL. The response MUST contain aggregated values (e.g. per
hour
orday
) and SHOULD not contain the plain click events. -
❏ The application SHOULD NOT provide a user interface (UI). Only a REST API is required.
-
❏ MUST use Spring Boot
-
❏ MUST use a build tool. Use a tool, you’re familiar with.
-
❏ Required services MUST be containerized. MAY be a docker container.
-
❏ The application itself MUST be containerized. MAY be a docker container.
-
❏ The project SHOULD be able to start with only one command (regardless of the dev setup).
-
❏ The business layer MUST contain minimum ONE meaningful test (the coverage is not essential).
-
❏ A relational database MAY be used to persist the data.