The goal of this assignment is to try an alternative for traditional Three Layered Architecture and try to implement a backend service using Clean Architecture approach.
You need to implement a backend service (API) called Reversi Online for playing a Reversi game (you can reuse your code from assignment #2). Requirements:
- user can authorize by his name and password, authentication for every request should be implemented via Json Web Tokens;
- user can request a new game, specifying a wanted opponent - other player or cpu;
- in case if user decides to play with other player, he needs to wait while some other player requests a game, and after that start playing with that player;
- detailed statistics about total amount of games, wins and losses amount should be stored for every player with a possibility for them to check that data;
- users must have specified way to communicate during a game - it can be full chat or a predefined set of phrases;
- At first, you need to propose complete Http API (all methods, URIs, parameters etc.). After you API is approved, you can continue to next steps.
- Implement a service around that API using Clean Architecture principles. Remember about persistence part, but do not implement any particular db integrations - for now your app can erase data between runs.
- On this step, you will be provided a DB you should use. It can be SQL or NoSQL, so design your interfaces carefully - they need to support any kind of persistence.
Maximum points: 10 (up to +10 additional)
- 1 point - approved Http API;
- 1 point - authentication via Json Web Tokens;
- 4 points - implementing a backend service according to Clean Architecture tasks;
- 2 points - implementing specified DB;
- 2 points - implementing an additional task.
You also can get additional points for:
- Implementing a client with GUI for your backend - up to +5 points. Client can be native or mobile application or separate website.
- Implementing a "hard" Reversi Ai using MiniMax algorithm - up to +3 points.
- Implementing one more additional task with extension of your service - up to +2 points.
- Clean Architecture book;
- Introductory video;
- Lecture from 22.03
After this you can read other materials on the internet but be aware that you can find a lot of wrong arrows and ideas.