You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

236 lines
10 KiB

#### Functional
###### Has the requirement for the allowed packages been respected?
##### Open the project
###### When examining the file system of the backend, did you find a well-organized structure, similar to the example provided in the subject, with a clear separation of packages and migrations folders?
###### Is the file system for the frontend well organized?
#### Backend
###### Does the backend include a clear separation of responsibilities among its three major parts - Server, App, and Database?
###### Is there a server component that effectively receives incoming requests and serves as the entry point for all requests to the application?
###### Does the application (App) running on the server effectively listen for requests, retrieve information from the database, and send responses?
###### Is the core logic of the social network implemented within the App component, including the logic for handling various types of requests based on HTTP or other protocols?
#### Database
###### Is SQLite being used in the project as the database?
###### Are clients able to request information stored in the database, and can they submit data to be added to it without encountering errors or issues?
###### Does the app implement a migration system?
###### Is that migration file system well organized? (like the example from the subject)
##### Start the social network application, then enter the database using the command `"sqlite3 <database_name.db>"`.
###### Are the migrations being applied by the migration system?
#### Authentication
###### Does the app implement sessions for the authentication of the users?
###### Are the correct form elements being used in the registration? (Email, Password, First Name, Last Name, Date of Birth, Avatar/Image (Optional), Nickname (Optional), About Me (Optional))
##### Try to register a user.
###### During registration, when attempting to register a user, did the application correctly save the registered user to the database without any errors?
##### Try to log in with the user you just registered.
###### When attempting to log in with the user you just registered, did the login process work without any problems?
##### Try to log in with the user you created, but with a wrong password or email.
###### Did the application correctly detect and respond to the incorrect login details?
##### Try to register the same user you already registered.
###### Did the app detect if the email/user is already present in the database?
##### Open two browsers (ex: Chrome and Firefox), log in into one and refresh the other browsers.
###### Can you confirm that the browser non logged remains unregistered?
##### Using the two browsers, log in with different users in each one. Then refresh both the browsers.
###### Can you confirm that both browsers continue with the right users?
#### Followers
##### Try to follow a private user.
###### Are you able to send a following request to the private user?
##### Try to follow a public user.
###### Are you able to follow the public user without the need of sending a following request?
##### Open two browsers(ex: Chrome and Firefox), log in as two different private users and with one of them try to follow the other.
###### Is the user who received the request able to accept or decline the following request?
##### After following another user successfully try to unfollow him.
###### Were you able to do so?
##### Profile
##### Try opening your own profile.
###### Does the profile displays every information requested in the register form, apart from the password?
##### Try opening your own profile.
###### Does the profile displays every post created by the user?
##### Try opening your own profile.
###### Does the profile displays the users that you follow and the ones who are following you?
##### Try opening your own profile.
###### Are you able to change between private profile and public profile?
##### Open two browsers and log in with different users on them, with one of the users having a private profile and successfully follow that user.
###### Are you able to see a followed user private profile?
##### Using the two browsers with the same users, with one of the users having a private profile and be sure not to follow him.
###### Are you prevented from seeing a non-followed user private profile?
##### Using the two browsers with the users, with one of the users having a public profile and be sure not to follow him.
###### Are you able to see a non-followed user public profile?
##### Using the two browsers with the users, with one of the users having a public profile and successfully follow that user.
###### Are you able to see a followed user public profile?
#### Posts
###### Are you able to create a post and comment on already existing posts after logging in?
##### Try creating a post.
###### Are you able to include an image (JPG or PNG) or a GIF on it?
##### Try creating a comment.
###### Are you able to include an image (JPG or PNG) or a GIF on it?
##### Try creating a post.
###### Can you specify the type of privacy of the post (private, public, almost private)?
###### If you choose the almost private privacy option, can you specify the users that are allowed to see the post?
##### Groups
##### Try creating a group.
###### Were you able to invite one of your followers to join the group?
##### Open two browsers, log in with different users on each browser, follow each other and with one of the users create a group and invite the other user.
###### Did the other user received a group invitation that he/she can refuse/accept?
##### Using the same browsers and the same users, with one of the users create a group and with the other try to make a group entering request.
###### Did the owner of the group received a request that he/she can refuse/accept?
###### Can a user make group invitations, after being part of the group (being the user different from the creator of the group)?
###### Can a user make a group entering request (a request to enter a group)?
###### After being part of a group, can the user create posts and comment already created posts?
##### Try to create an event in a group.
###### Were you asked for a title, a description, a day/time and at least two options (going, not going)?
##### Using the same browsers and the same users, after both of them becoming part of the same group, create an event with one of them.
###### Is the other user able to see the event and vote in which option he wants?
#### Chat
##### Try and open two browsers (ex: Chrome and Firefox), log in with different users in each one. Then with one of the users try to send a private message to the other user.
###### Did the other user received the message in realtime?
##### Try and open two browsers (ex: Chrome and Firefox), log in with different users that are not following each other at all. Then with one of the users try to send a private message to the other user.
###### Can you confirm that it was not possible to create a chat between these two users?
##### Using the two browsers with the users start a chat between the two of them.
###### Did the chat between the users went well? (did not crash the server)
##### Try and open three browsers (ex: Chrome and Firefox or a private browser), log in with different users in each one. Then with one of the users try to send a private message to one of the other users.
###### Did only the targeted user received the message?
##### Using the three browsers with the users, enter with each user a common group. Then start sending messages to the common chat room using one of the users.
###### Did all the users that are common to the group receive the message in realtime?
##### Using the three browsers with the users, continue chatting between the users in the group.
###### Did the chat between the users went well? (did not crash the server)
###### Can you confirm that it is possible to send emojis via chat to other users?
#### Notifications
###### Can you check the notifications on every page of the project?
##### Open two browsers, log in as two different private users and with one of them try to follow the other.
###### Did the other user received a notification regarding the following request?
##### Open two browsers, log in with different users on each browser, follow each other and with one of the users create a group and invite the other user.
###### Did the invited user received a notification regarding the group invitation request?
##### Open two browsers, log in with different users on each browser, create a group with one of them and with the other send a group entering request.
###### Did the other user received a notification regarding the group entering request?
##### Open two browsers, log in with different users on each browser, become part of the same group with both users and with one of the users create an event.
###### Did the other user received a notification regarding the creation of the event?
#### Docker
##### Try to run the application and use the docker command `"docker ps -a"`
###### Can you confirm that there are two containers (backend and frontend), and both containers have non-zero sizes indicating that they are not empty?
##### Try to access the social network application through your web browser.
###### Were you able to access the social network application through your web browser after running the docker containers, confirming that the containers are running and serving the application as expected?
#### Bonus
###### +Can you log in using Github or other type of external OAuthenticator (open standard for access delegation)?
###### +Did the student created a migration to fill the database?
###### +If you unfollow a user, do you get a confirmation pop-up?
###### +If you change your profile from public to private (or vice versa), do you get a confirmation pop-up?
###### +Is there other notification apart from the ones explicit on the subject?
###### +Does the project present a script to build the images and containers? (using a script to simplify the build)
###### +Do you think in general this project is well done?