Our task is to add integration with the Wiki Recent Change API (wikimedia endpoint link) (alternatively - WikiMedia Event Stream API).
As a part of that task, we should design an API that let:
- Get all Recent Changes as a real-time stream
- Track in real-time the activity of a particular user or a set of users (this assumes we shall create a user if we have not observed any events from them)
- Retrieve a statistic of a particular user which include:
- Information about user contribution as a series of points over time. (Wikipedia User Contribution can be gathered as X Y data points (where X is time and Y is a total number of contributions at that point in time. As an example of such may be taken the following graphic of a user contribution for a Github project
- Note, the API should allow one to specify the time granularity in which the series should be returned
- Topics to which user has contributed most
- Type of contribution (typos editing | content addition). The type of contribution should be exposed as absolute numbers so one can guess whether the user helps with adding new facts or mostly with copyediting.
- Retrieve most active user during the (YEAR|MONTH|DAY)
- Retrieve the top 10 topics which have the most number of typo editings
- Optional: Retrieve the word in which users do mistake most of the time
- The project is implemented used functional reactive programming approach
- Design Project Architecture and present it. Explain the reasons why the specific approach was selected.
- Explain data flow on the sequence diagram
- Implement core logic and makes sure that it meets quality criteria (test coverage, manual verification)
- Explain the reasons, why a specific implementation approach was selected
docker-compose exec backend ./test.sh
python -m pytest --cov