Home - csci-152-studenthub/studenthub GitHub Wiki
Welcome to the studenthub wiki!
Table of Contents
- Introduction
1.1 Purpose
1.2 Scope
1.3 Overview - Description
2.1 Product Components
2.2 Tools - Requirements
3.1 UI Requirements
3.2 Functional Requirements
3.3 Non-Functional Requirements - Visualizations
4.1 Use Case Diagram
4.2 Class Diagram
4.3 Wireframes
Team Members
- Steven R.
- Erick C.
- Nina L.
- Leng X.
- Stanley W.
1. Introduction
This wiki will first cover an in-depth description of the project's scope. Secondly, it will explain, in detail, a list of specific requirements the project needs. Lastly, the priorities of each of these requirements will be assigned in order. This is to ensure the project is completed successfully. It will provide a solid idea of the expected flow for the development and testing phases.
1.1 Purpose
StudentHub is a platform that allows users to form communities, collaborate, tutor, and socialize with each other.
1.2 Scope
StudentHub is a website that allows users to connect to other users. The main features will be to provide a general feed that has posts from other various sub-feeds. For example: Fresno State feed, school feed, school events, on-campus events, advice feeds, professor/class review feeds, and more. Registered users will be allowed to post and view the feeds. They will also be able to choose which study groups they want to be in and/or create a group, be a tutor and/or find a tutor depending on their needs.
1.3 Overview
The rest of this wiki will include the description of this platform, website requirements, and various development visualizations. The description section discusses different types of components that the final product would need to be implemented.
The requirements section will contain the essential elements that needs to be implemented before the product can be considered ready for release. UI requirements, functional requirements, and non-functional requirements will also be discussed.
The visualizations will contain all diagrams used for development that were not mentioned in the previous sections. The diagrams will include use case diagrams, class diagrams, and wireframes.
2. Description
2.1 Product Components
There are two main parts of the website; the front-end, made with React and AntDesign, and the back-end, made up of AWS services such as API Gateway, Cognito, DynamoDB, Lambda, and S3. Their interactions are shown below.
2.1.1 Front-End
The front-end is composed of React and a UI library AntDesign.
2.1.2 Back-End
The back-end is completely made up of AWS services making this a server-less implementation.
-
AWS API Gateway
This will be used to create REST API endpoints for the front-end to call.
-
AWS Cognito
Cognito will handle all user authentication and account management for the application. It adds user sign-up, sign-in and access control to our website which we can then manage on the AWS Console.
-
AWS DynamoDB
DynamoDB will be used as the database for the app to store different data such as post information (post creator, time of creation, title, body,...).
-
AWS Lambda
Lambda will be used to insert or remove data from the database (DynamoDB). It can also be used to start other services such as sending emails/text, uploading and downloading media.
-
AWS S3
S3 will be used to store all media files such as images, videos, text files, pdfs, etc. It will also be used to host the website.
2.2 Tools
- Discord
- React
- Nodejs
- Amazon Web Services
- Ant Design
3. Requirements
3.1 UI Requirements
3.1.1 UI Requirements 1.1
ID: UIR1
TITLE: Main Window
DESC: Given that the user has entered the website, a window will be displayed.
RAT:In order for the user to see a UI.
DEP: None.
3.1.2 UI Requirements 1.2
ID: UIR2
TITLE: Login Page
DESC: Given that the main window has opened, the first page displayed by the window should allow the user to sign in with email and password, go to another page to create a new account, or recover email and password.
RAT:In order for the user to log in or go sign up for a new account on a new page.
DEP: URI1, UIR3
3.1.3 UI Requirements 1.3
ID: UIR3
TITLE: Sign Up Page
DESC: Given that the user selected to create a new account from the login page, they should be able to enter a username, email, and password to create a new account.
RAT:In order for the user to see a UI.
DEP: UIR1, UIR2
3.1.4 UI Requirements 1.4
ID: UIR4
TITLE: Dashboard/Home Page
DESC: Given that the user has signed in, the sign in page should redirect the user to the dashboard page that contains the core functionality of the website and buttons to go to the tutor page, collaboration page, or the profile page.
RAT:In order for the UI to house the core functionality of the app.
DEP: UIR2
3.1.5 UI Requirements 1.5
ID: UIR5
TITLE: Learning Resource Page Button
DESC: Given that the user selected the learning resource button on the dashboard/home page, the page will display information about:
- tutors
- view other tutors
- resources for subjects/topics
RAT:In order for the user to see tutoring information.
DEP: UIR4
3.1.6 UI Requirements 1.6
ID: UIR6
TITLE: Collaboration Page Button
DESC: Given that the user has selected the collaboration button on the dashboard/home page, the page will display information on what groups the user follow, what group the user participate in, and functionalities that allows the user to make the group private or public.
RAT:In order for the user to see information on the groups they're in.
DEP: UIR4
3.1.7 UI Requirements 1.7
ID: UIR6
TITLE: Profile Page Button
DESC: Given that the user has selected the profile button on the dashboard/home page, the page will display:
- the user profile
- profile avatar
- inbox for private messages
- friendlist
- awards and achievement based on how active the user is
RAT:In order for the user to change/see their profile page.
DEP: UIR4
3.2 Functional Requirements
3.2.1 Functional Requirements 1.1
ID: FR1
TITLE: User Registration
DESC: A user should be able to register through the web application. The user must provide a username, student email, and password
RAT:In order for the user to register
DEP: None
3.2.2 Functional Requirements 1.2
ID: FR2
TITLE: Verify Account
DESC: A user should be able to verify their account using the email they signed up with
RAT: In order for the user to verify their account.
DEP: FR1
3.2.3 Functional Requirements 1.3
ID: FR3
TITLE: User Login
DESC: Given that a user has registered, then the user should be able to log into the application. The log-in information will be stored via Amazon Web Services and in the future the users should logged in automatically.
RAT: In order for the user to log in
DEP: FR1, FR2
3.2.4 Functional Requirements 1.4
ID: FR4
TITLE: Dashboard/Home page
DESC: Given that a user has logged in, then the first page that is shown is a dashboard. From this page users should be able to see:
- a general feed
- select the tutor button
- select the collaboration button
- select the profile button
- search for posts.
RAT: In order for the user to view the core functionality of the website
DEP: FR1, FR2
3.2.5 Functional Requirements 1.5
ID: FR5
TITLE: General Feed
DESC: Given that the user is on the home page, the user will be able to see a feed of posts from other users. These post can contain any information from other sub-feeds. The user will also be able to create a post to contribute to the feed.
RAT: In order for the user to view feeds from all other sub-feeds or post to the general feed.
DEP: FR4
3.2.6 Functional Requirements 1.6
ID: FR6
TITLE: Sub-feeds
DESC: Given that the user is in a specific sub-feed they can post to the feed about a specific topic
RAT: In order for the user to view/post to the sub-feed they are in
DEP: FR5
3.2.7 Functional Requirements 1.7
ID: FR7
TITLE: Learing Resource Page
DESC: Given that the user has navigated to the learning resource page, the user will be able to manage their tutoring information or view resources that other users have posted
RAT: In order for the user to share resources with other users
DEP: FR5
3.2.8 Functional Requirements 1.8
ID: FR8
TITLE: Collaboration Page
DESC: Given that the user has navigated to the collaboration page, the user will be able to manage the groups they're present in or create their own group with other users.
RAT: In order for the user to manage their groups
DEP: FR5
3.2.9 Functional Requirements 1.9
ID: FR9
TITLE: Profile Page
DESC: Given that the user has navigated to the profile page, the user will be able to manage their account information.
RAT: In order for the user to manage their profile page
DEP: FR5
3.2.10 Functional Requirements 1.10
ID: FR10
TITLE: Tool-Tip
DESC: Display a text box with description of the object that the mouse is hovering over.
RAT: To help or assist user with unfamiliarity of the object(words, image, etc)
DEP: FR5
3.3 Non-Functional Requirements
3.3.1 Non-Functional Requirements 1.1
ID: NFR1
TITLE: Operating System
DESC: The javascript,css file should properly run on computers that use the Windows 10 operating system.
RAT:In order to ensure the platform is available
3.3.2 Non-Functional Requirements 1.2
ID: NFR2
TITLE: Sliding the drawer menu
DESC: User will be able to use the sliding drawer menu with ease. User will also be able to close the drawer with ease
RAT: In order for the user to see gain access to the different pages.
3.3.3 Non-Functional Requirements 1.3
ID: NFR3
TITLE: Delete feed
DESC: While on the Feed page, user are allow to delete their feed. The delete button will need the action to delete the feed with ease and fully erase the feed from the database.
RAT: In order for the user to clean their feed with ease.
3.3.4 Non-Functional Requirements 1.4
ID: NFR4
TITLE: Maintainability
DESC: Code should be written in a clear manner and well order in files to be edited with ease. Variables should easily be editable through react to allow quick updating and editing.
RAT: In order to edit the platform easily
3.3.5 Non-Functional Requirements 1.5
ID: NFR5
TITLE: Global Variable
DESC: Have variable like current user, feed info, and time be global to allow the ease of calling the variable when needed.
RAT: In order for the function to call the different variable with ease.
3.3.6 Non-Functional Requirements 1.6
ID: NFR6
TITLE: Go to different page
DESC: When using the search and dashboard page user are allow to click on the theme to go to the pages.
RAT: In order for the user to go to different pages which they selected