Skip to content

Collaborative repo for all RS teams to commit code.

Notifications You must be signed in to change notification settings

ccarner/COMP90082-RS-2021

Repository files navigation

Software Training Repository

Project Overview

The Software Training Repository was built to address the issue of the rapid evolution and ever-changing landscape of software technologies, frameworks, and tools used in the software development process. With the consistent introduction of new updates to existing tools on a daily basis, it is often difficult for a software engineer to keep up to date with the latest emerging technologies or changes in existing solutions. Whilst there are sources of information available on the web, as a student without the necessary experiences, it can often be difficult to determine the legitimacy and appropriateness of the claims of such sources.

The Software Training Repository seeks to provide students and individuals with access to a centralized, reliable, and up to date source of information. The core of the system aims to be a community-driven hub, with students and staff being able to contribute their understanding and knowledge of various frameworks, technologies, and tools through articles and discussion forums. New articles are able to be published by students with students also being able to modify existing articles by adding new or editing outdated information.

Installation Guide

https://confluence.cis.unimelb.edu.au:8443/display/COMP900822021SM1RR/Deployment+Guides

Features

1. User

The student and moderators should be able to register account and login. The administrator should be able to manage users’ accounts.

  • Note that due to the limitation of unimelb database access, from sprint 3, we gave up developing the user story 1.0 (Login via unimelb account) and replaced it with user story 1.1 (Register account)

2. Subject

Subject is a major component of the website. The subject page should contain a subject description and the related articles and tools recommand by the website moderators. All users should be able to view the subject pages that they subscribe to. And the moderators should be able to create, delete, edit subjects, add sections to subjects and review all pending articles under each subject.

3. Article

Articles is a criticle function for the website to thrive. All users can create new articles and edit exsiting articles to share their ideas. However, any edictions made by students need to be reviewed by website moderators, and the moderators may approve or reject those editions. Besides users can attach tags to an article, in that case, other users will be able to search those articles based on their tags. Meanwhile, users will also be able to seach articles base on the keywords in their title.

4. Comment

Comment is a function for users to provide feedbacks to contents in the website. Users should be able to leave comments to articles and reply to other comments.

5. Homepage

After login to the website, users will be directed to their homepage. From their homepage, users should be able to see all subjects enrolled by the user. And for moderators, they should also be able to see the subjects moderated by them.

6. Profile

Users should have their own profile pages where they can check all the articles (and pending articles for students) they have created.

Key Classes

Front-end

Server (Front_end/Front_end/src/)

  • app.js: The front end of the application, handles routing to different pages.

Utils (Front_end/Front_end/src/utils/): Contains Utility classes for use by other classes.

  • utils/AuthService.js: Performs the authentication to the backend and stores role and authorization details.
  • utils/request.js: Formatted http request for use by other classes.
  • utils/tools.js: Tools for adding and getting parameters to and from urls.

components (Front_end/Front_end/src/components/): Contains components used on all pages.

container (Front_end/Front_end/src/container/): Contains details for every page functionality.

The following sections list these pages inside container folder, presenting in the folder order:

addSection (Front_end/Front_end/src/container/addSection/): Contains class with logic for adding sections.

addUserPage (Front_end/Front_end/src/container/addSection/): Contains class with logic for adding users.

ArticlePage (Front_end/Front_end/src/container/ArticlePage/): Contains the classes for the page for viewing articles.

Comment (Front_end/Front_end/src/container/Comment/): Contains the comment components on pages.

CreateArticlePage (Front_end/Front_end/src/container/CreateArticlePage/): Handles the page for creating articles, set up differently from editing existing articles.

EditArticlePage (Front_end/Front_end/src/container/EditArticlePage/): Contains classes for editing articles.

EditingSectionPage (Front_end/Front_end/src/container/addSection/): Contains class for editing sections.

FAQPage (Front_end/Front_end/src/container/FAQPage/): Contains the page for frequently asked questions (FAQ) to help use get familiar with the system.

  • FAQPage/FAQ.jsx: FAQ page contains content to help users get familiar with the system.

HomePage (Front_end/Front_end/src/container/addSection/): Contains the homepage.

  • HomePage/Home.jsx: Contains logic for the homepage, displaying subjects for each user.

LoginPage (Front_end/Front_end/src/container/LoginPage/): Contains class that displays the login page.

PendingPage (Front_end/Front_end/src/container/PendingPage/): Contains classes related to pending articles for moderators.

ProfilePage (Front_end/Front_end/src/container/ProfilePage/): Contains classes relating to the profile page, which displays all articles published by the user.

RegisterPage (Front_end/Front_end/src/container/RegisterPage/): Contains class for registring a new user.

SearchPage (Front_end/Front_end/src/container/SearchPage/): Contains page for searching all articles.

SubjectPage (Front_end/Front_end/src/container/SubjectPage/): Contains class for displaying details for a subject.

WelcomePage (Front_end/Front_end/src/container/WelcomePage/): Contains the landing splash page.

User Experience Testing

User experince testing has been performed The exported version of our user experience testing can be found in this folder.

Back-end

Server (backend/Back_end/)

  • app.js: Working as a web server, it listens to the request sent by each connected client and be ready to respond to it. It also builds a connection with database to allow data CRUD.

Routers (backend/Back_end/routers/): Defines a series of routers that redirect HTTP requests from the front-end to the corresponding back-end controllers based on the suffix of the request.

  • routers/article.js: Redirects the incoming HTTP requests with suffix of “/article” to their corresponding functions in the article controller.
  • routers/auth.js: Redirects the incoming HTTP requests with suffix of “/article” to their corresponding functions in the article controller.
  • routers/comment.js: Redirects the incoming HTTP requests with suffix of “/article” to their corresponding functions in the article controller.
  • routers/search.js: Redirects the incoming HTTP requests with suffix of “/article” to their corresponding functions in the article controller.
  • routers/section.js: Redirects the incoming HTTP requests with suffix of “/article” to their corresponding functions in the article controller.
  • routers/subject.js: Redirects the incoming HTTP requests with suffix of “/article” to their corresponding functions in the article controller.
  • routers/tool.js: Redirects the incoming HTTP requests with suffix of “/article” to their corresponding functions in the article controller.
  • routers/user.js: Redirects the incoming HTTP requests with suffix of “/article” to their corresponding functions in the article controller.

Middlewares (backend/Back_end/middlewares/): Contains classes that use to verify the identity of request owners and gurantee the security of the website.

Controllers (backend/Back_end/controllers/): Defines a series of functions that take the HTTP requests redirected by routers, process the requests, and generate HTTP responds to send back to the front-end.

  • controllers/article.js: Contains functions that handles the incoming HTTP requests related to articles. (e.g. publish new articles, approve pending articles, etc.)
  • controllers/comment.js: Contains functions that handles the incoming HTTP requests related to comments. (e.g. post new comments of an article, delete or update an existing comment, etc.)
  • controllers/search.js: Contains functions that handles the incoming HTTP requests related to search. (e.g. search an article by keywords, etc.)
  • controllers/section.js: Contains functions that handles the incoming HTTP requests related to section. (e.g. add an section of article to a subject, add a comment section to an article, etc.)
  • controllers/subject.js:Contains functions that handles the incoming HTTP requests related to subjects. (e.g. create or update a subject, etc.)
  • controllers/tool.js: Contains functions that handles the incoming HTTP requests related to tools. (e.g. add a new tool, etc.)
  • controllers/user.js: Contains functions that handles the incoming HTTP requests related to users. (e.g. user subscribe a subject, etc.)

Proxies (backend/Back_end/proxies/): Each class corresponds to a database document and works as an intermediate layer to provide the necessary functions for the system to communicate with that database.

  • proxies/article.js: Provides necessary CRUD function for article documents in mongoDB.
  • proxies/comment.js: Provides necessary CRUD function for comment documents in mongoDB.
  • proxies/section.js: Provides necessary CRUD function for section documents in mongoDB.
  • proxies/subject.js: Provides necessary CRUD function for subject documents in mongoDB.
  • proxies/tool.js: Provides necessary CRUD function for tool documents in mongoDB.
  • proxies/user.js: Provides necessary CRUD function for user documents in mongoDB.

Database

The database model are defined in the backend/Back_end/models/ folder using Mongoose framework.

  • models/article.js: Defines the Article and the PendingArticle mongoose model.
  • models/comment.js: Defines the Comment mongoose model and some functions auto-triggered functions related to the model.
  • models/section.js: Defines the Section mongoose model.
  • models/subject.js: Defines the Subject mongoose model and some functions auto-triggered functions related to the model.
  • models/tool.js: Defines the Tool model and some functions auto-triggered functions related to the model.
  • models/user.js: Defines the User mongoose model.

The updated and new documents from semester 1 of COMP90082 are described below:

The document details of previous project are shown in the diagram below:

RS-SystemDiagrams-DatabaseDiagram.png

API Testing

Api testing has been performed using post man collections The exported version of our api testing can be found in this folder.

Traceability matrix

Test Id Test Case Status Result
1.1.1 When the student fill in the userid (899909) ,username(john doe) and password (password), a new student account should be created and the account should be able to use for login pass A new account has been created and was able to login successfully
1.1.2 When the student fill in the userid(899909) or username which already existed in the system,

the system should display an error.

fail The system was stuck in the register page and does not respond with error.
1.2.1 When the student/moderator fill in the correct account(student) and password(123) on the Login page,

the student/moderator's homepage will be shown on the website.

pass Successfully login to the system
1.2.2 When the student/moderator fill in the wrong account(student) and password(899) on the Login page,

the student/moderator will get an error message telling him/her the provided account information is wrong.

pass Responded with error message
1.3.1 (admin login info(username admin2 password admin2))

When the administrator clicks the "User Management" button on the home page, the administrator should be able to add a new user into the system.

fail Admin login was successful but when adding a student type into the system the system responded with error.
2.1.1 When the moderator clicks "Add Subject" on his/her Homepage and provides a unique subject code and other relevant information, the subject will be successfully created. pass Moderator was able to successfully add subject.
2.1.2 When the moderator clicks "Add Subject" on his/her Homepage and provides a duplicate subject code and other relevant information, the subject will not be successfully created. fail Adding subject has been re directed to the subject page and it does not respond error.
2.2.1 When the moderator clicks edit page layout in the subject page and continues by clicking "Add new section" moderator add a new section detail and publish , a new section should be created for the subject. pass A new section was added to the subject
2.2.2 When the moderator click edit page layout in the subject page and continue by clicking "Add new section" moderator add a new section detail and cancelA new section should be created for the subject pass Nothing happen the operation has been cancel
2.3.1 When the moderator clicks "Delete" in the Edit Subject Page Layout page, and confirms the confirmation message in the pop-up window, the section will be successfully deleted. pass The section has been deleted
2.3.2 When the moderator clicks "Delete" in the Edit Subject Page Layout page, and cancels the confirmation message in the pop-up window, the section will not be successfully deleted. pass The operation has been cancel
2.4.1 When the moderator clicks "Pending Submissions" in the subject page, the moderator should be able to view pending submissions submitted by student in the page pass Moderator was able to view pending submission
2.4.2 When the moderator clicks approve for one of the pending submission, the moderator should be able to see the approve article in the subject page pass Moderator was able to approve th article and the article is now in the subject list
2.4.3 When the moderator clicks delete for one of the pending submission, the pending article should be deleted from the page pass Moderator deleted the article and the article is gone
2.5.1 When the student clicks the subject on his/her Homepage, the student will be directed to the subject page and see all the related materials on the Subject page. pass The page was redirected to subject page
2.5.2 When the moderator clicks the subject on his/her Homepage, the moderator will be directed to the subject page and see all the related materials on the Subject page as well as other moderator-exclusive options. pass The page was redirected to subject page for moderator with new options
3.1.1 When the moderator/student clicks "Add new article" and click "Publish", the article should be created on the subject page. pass The article has been created
3.1.2 When the student clicks "Add new article" and clicks "Publish", the pending article should be created and the moderator should be ready to review. pass The article was added to pending article list
3.2.1 When the student clicks the "Edit Article" button on that article's page, makes a modification, and click Save, the article will be created as a pending article. fail The edited article was created as pending article(note but the created pending article cannot be approve)
3.2.2 When the moderator clicks the "Edit Article" button on that article's page, makes a modification, and clicks Save, the article will be created and published directly. pass The article was edited
3.2.3 When the moderator clicks the "Edit Article" button on that article's page, makes a modification, but clicks Cancel, the article will not be created. pass The operation has been cancel
3.3.1 When the moderator clicks the "Edit Article" button on that article's page, add or delete a new tag, the tag should be added to the article. pass A new tag was added to the article
3.3.2 When the student clicks the "Edit Article" button on that article's page, add or delete a new tag, the article should be added as a pending article for the moderator to review. fail The article was created as pending article(note but the created pending article cannot be approve)
3.4.1 When the moderator clicks the "Pending Article Submission" button on the Subject page, the moderator will see a list of all the current pending articles on that subject. pass Moderator can see list of pending article
3.5.1 When the moderator clicks approve for one of the pending submission, the moderator should be able to see the approve article in the subject page pass Moderator was able to approve the article and the article was added to the list
3.5.2 When the moderator clicks delete for one of the pending submissions, the pending article should be deleted from the page. pass Moderator was able to delete the article
3.6.1 When the moderator clicks the "Reject" button of a pending article on the Pending Articles Submission page, the pending article will be rejected and will not be published. pass Moderator has rejected an article and is not being added
3.7.1 When the moderator clicks search(SWEN90014) and types some content in the search bar, the related articles should be shown in the search list. fail The article list appear.(note the search can only able to find articles based on the tag)
3.7.2 When the moderator clicks search and types some content in the search bar and chooses the type of the content, the related articles should be shown in the search list. fail The article list appear ((note the search can only able to find articles based on the tag)
3.8.1 When the student/moderator searches the tags in the search bar, the student/moderator can find all articles tagged with the target tag. pass The article list appear if it is search with the tag
4.1.1 When the student/moderator type comment and post, the comment should be shown on the article page fail The comment can be added in recently created article but was not able to added in other type of article
4.2.1 When the student/moderator clicks the "Delete" button on his/her own comment, the comment will be successfully deleted. fail Created comment cannot be deleted
4.3.1 When the student/moderator click "reply" and type content and click "Post", the comment should be shown on the article page fail Comment can be reply if there is the comment that is created but due to some comment function not working fully hard to test the full scope
5.1.1 When the student/moderator goes to his/her Homepage, all the subjects enrolled/moderated by the student/moderator will be listed there. pass All the subject that is enrolled in or moderate by can be found
8.1.1 When the student/moderator clicks profile on the right side of the navigation bar, the student/moderator should be able to view the published and pending articles that they did. pass Moderator and student can see the publish and pending list