- Users can add, edit, delete and fetch their own ‘todos’.
- Users can make a comment to the todo. (check 5 and 6 for restrictions.)
a. Only the owner of the comment can delete or update the comment. - Users can like or dislike the todo. (check 5 and 6 for restrictions.)
- Each todo can be marked as ‘complete’.
a. Todo has 2 status: complete or incomplete - A user can share todos with other users.
a. Only the owner of todo and shared users can fetch the todo. - One user cannot access the todos of another if todos are not shared with them.
- Todos can be sorted by creation date.
- Todos can be sorted by the number of likes or the number of dislikes.
- Shared users of the todo can be listed.
- Users can filter the todos by their status. (complete or incomplete)
- Admin user can also do the followings:
a. There is only one admin user.
b. Can list the top 3 users that have the most incomplete todos.
c. Can list the top 5 todos that have the most comments.
d. Can list the top 3 todos that have the most number of likes.
- Use JWT for authentication and authorization.
- Follow the REST convention to build the server application.
- Backend API requests are logged.
- Use MongoDB as a database server.