Use Case 1: When user is registered, he can go to the list of users (by pressing corresponding button in his profile page) where he can access other users' profiles to view their detailed information and follow/unfollow them.
Use Case 2: From any page you can access the search bar, You also can go to advanced search to discover new movies by different criteria ( see INSTRUCTIONS WIKI )
Use Case 3: Any user (even anonymous) can access the domain object (movie) using the search bar or advanced search: type the name of the movie and click on one of the movie cards that are displayed dynamically as you type.
Use Case 4: When accessing a domain object (a movie) anonymous user can view detailed movie information, but he does not have access to any user activity information. When being logged in, user can see all movie reviews and a list of users who liked the movie. He also can like, bookmark and review the movie (as well as remove like / remove bookmark / remove particular review ). The interface is very intuitive: to like/unlike - pres the heart icon on top of the movie poster (icon is displayed differently depending on whether movie is already liked by the user); to bookmark/unbookmark -press the bookmark icon next to the heart icon; to review the movie - input you review text into the text area and press the add button; to delete review - press the times icon on top of the review you want to remove.
Use Case 5: To view information about other users, the Logged in user can go to the List of Users by clicking on the corresponding button in his profile and choosing a particular user (click on 'view profile' button on the user's card).
Use Case 6: When on the movie page user can like/bookmark/review a movie (see Use Case 4)
Use Case 7: Each movie has a list of reviews, likes, bookmarks connected to that particular movie. User can go from movie to movie to see that the reviews and lists of users who liked the movie are different for each movie.
Use Cases 8/9/10/11: When logged in as an admin, user can access the admin panel (not accessible by other users even by harcoding the url). In admin panel, when choosing the 'Users' tab, admin can see a table of all users with information about each of them. The top row of the table is for creating new users. Admin should fill in all input areas and press the add button to create a new user. If input fields are empty, when add button is pressed, the default user is created (both, his username and password are user<#>, where # is the length of the list of users: if there are 10 users, when pressing a button user11 is created). To clean all input fields, admin should press the clean button (times icon) to the right of the add button. Admin can delete the user by pressing the delete button in a particular user row. When user is deleted, all information connected to this user is also deleted (his review, likes, bookmarks, followers, followings, activities). Admin can modify the user by pressing the edit button in a particular user row. When button is pressed, the edit mode is entered. In edit mode, the first row of the table (create user row) is populated with the edited user information, and the create button is substituted with the update button. To update user, admin should modify information in the input boxes and press update button. To cancel the update (exit edit mode without making changes), admin should press the clean button.
Use Case 12: Admin can view the list of all movies that are stored in app's DB by going to the Movies tab in the admin panel. The edit and delete processes are similar to ones in the previous use case. When the information about the movie is modified, every user who access the movie page, will see the updated information about the movie (depending on whether movie is stored in app's DB or not, when accessing the movie object in the movie page, user sees either the API's info, or info from the app's DB)
Use Case 13: Admin can view the logs (all users' activities: like,unlike,bookmark,unbookmark, foolow, unfollow, add review, delete review) by going to the Logs tab in the admin panel.