/
Instructions.txt
38 lines (30 loc) · 2 KB
/
Instructions.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| ADDITUP |
---------
The objective of this exercise is to create a simple website that offers games to train your brain.
The 1st game to implement is AddItUp - a simple addition online game.
Business requirements
----------------------------
1/ When user connects to the web application, he is presented with a simple page with a question of type a + b = ?
2/ User must submit answer within given timeframe (defined by server). User can submit one and only one answer for a given equation.
3/ Timer should be displayed on screen for user to know how much time is left.
4/ If answer is correct, next question is returned.
5/ If user provides 3 good answers in a row he is promoted to the next rank and time allowance for each question is reduced by 1 second.
Example of ranks: "Beginner", "Talented", "Intermediate", "Advanced", "Expert"
6/ If answer is incorrect or time runs out game ends and user is offered the option to start again.
7/ 2 users should not see the same equations at the same time.
Technical requirements
-----------------------------
Solution should use 3 projects:
- WebApi .net core project - .\WebApi\WebApi
- Typescript client library (used by React client app) - .\WebApiClient\common
- React app - .\WebApiClient\additup-app
Exercise creation and score management should be done on the server.
Each project should come with a set of some sensible unit tests which will give quality confidence.
We don't expect 100% coverage.
Common/reusable functionality should be implemented in the common package.
For example it could provide a form validation api: number input is of the correct type and within the expected range.
Expectations & Assumptions
-----------------------------------
Please list assumptions made during implementation of the solution.
Being an asp.net core project, we should be able to run it from any machine with Visual Studio and node / npm
While developer can use libraries of his choice, candidates should be able to explain how he/she offer the same functionality without the library.