User Scenarios, Requirements and Elicitation question about the App. - dberkerdem/SWE573_Term_Project GitHub Wiki

About the App

LinkMe is a web based note-taking and posting application. Users can accumulate information from different resources in order to organize it, tag it and share it with other people. Moreover, users users can browse through spaces or tags to discover contents in a specific area.

Terminology

bLink: bLink is the smallest part which contains caption and willing to share substance and created date. Moreover, it can contain link, space and tags.
Tag: Tag is used to describe the content and help classify it for search and organization purposes.
Link: Link is a reference to a web page or other resource that is embedded in a document or web page..
Space: Spaceis a feature that allows users to create and join public or private groups centered around specific topics or interests.
User: User is who has an account on the system.

User Scenarios

Amy is working as an Data Scientist in a tech company that builds AI Product solutions in computer vision. Amy frequently come across with usefull contents for his job while browsing through social media. Amy needs a notetaking space to keep these contents organized. Moreover, Amy wants to share these organized contents with her peers and would like to access her peers' content recommendations from one place.

Requirements

Functional Requirements

The User

  • The User should be able to create an account.
  • The User should have a unique email address.
  • The User should have a unique username.
  • The User should hava a password with at least 8 charachters.
  • The User should provide matching passwords for registration.
  • The User should be able to login to the application.
  • The User should provide valid username-password pair in order to login.
  • The User should have a Profile page.
  • The User should be able to edit its bLinks.
  • The User should be able to delete its bLinks within its profile page.
  • The User should be able to create bLinks by providing link(mandatory), caption(mandatory), tag(optional) and space(optional).
  • The User should be able to track number of followers in its profile page.
  • The User should be able to track number of followings in its profile page.
  • The User should be able to track number of bLinksin its profile page.
  • The User should be able to book a bLinks.
  • The User should be able to see its bio in its Profile page.
  • The User should be able to see its username in its Profile page.
  • The User should be able to change its username in settings page.
  • The User should be able to change its profile picture in settings page.
  • The User should be able to change its background picture in settings page.
  • The User should be able to change its bio in settings page.
  • The User should be able to change its email in settings page.
  • The User should be able to delete its account in settings page.
  • The User should be able to logout.
  • The User should be able to go to Search page through navbar.
  • The User should be able to go to Feed page through navbar.
  • The User should be able to go to Tags page through navbar.
  • The User should be able to go to Spaces page through navbar.
  • The User should be able to go to Profile page through navbar.
  • The User should be able to go to Settings page through navbar.
  • The User should be able to search other users through search page.
  • The User should be able to search tags through search page.
  • The User should be able to search spaces through search page.
  • The User should be able to search tags through tags page.
  • The User should be able to sign up with third party applications. (Google and Facebook).
  • The User should be able to sign in with third party applications. (Google and Facebook)
  • The User should be able to sign in with email address.
  • The User should be able to create tags.
  • The User should be able to delete its' tags.
  • The User should be able to create spaces.
  • The User should be able to delete its' spaces.

The System

  • The System shall redirect the user to its Profile page if registration attempt is valid.
  • The System shall redirect the user to signup page with error message if registration attempt is invalid.
  • The System shall redirect the user to its Profile page if login attempt is valid.
  • The System shall redirect the user to signin page if login attempt is invalid.
  • The System shall list the bLinks with a descending order of creation date of the user under its Profile page.
  • The System shall redirect the User to the according Tag page when clicked to the tag of the bLink.
  • The System shall redirect the User to the according Space page when clicked to the space of the bLink.
  • The System shall list latest created tags when a user access Tags page though navbar.
  • The System shall list latest created spaces when a user access Spaces page though navbar.
  • The System shall contain a follow mechanism.
  • When a user browses the Feed page, the System shall list all available tweets of the users' followings with a descending order of creation date.
  • When user enters a tag in tags page serach, the System shall list all related content available.
  • When user enters a space in spaces page search, the System shall list all related content available.
  • When a user creates a spaces, the System shall check whether the space name already exist.
  • When a user attempts to create a space that space name is already exist, the System shall warn the user.
  • When a user attempts to create a space that space name is already exist, the System shall redirect the user to the according spaces' page.
  • When a user creates a tag, the System shall check whether the tag name already exist.
  • When a user attempts to create a tag that tag name is already exist, the System shall warn the user.
  • When a user attempts to create a tag that tag name is already exist, the System shall redirect the user to the according tags' page.
  • When a new user registers, the system should create a Profile for user.
  • When a new user registers, the system should assign a default profile picture to users' Profile.
  • When a new user registers, the system should assign a default background picture to users' Profile.
  • When a new user registers, the system should assign a unique user id to users' Profile.
  • When a new user registers, the system should assign a default bio to users' Profile.
  • When a new user registers, the system should assign a joined at date to users' Profile.
  • When a new user registers, the system should assign an empty list of followers to users' Profile.
  • When a new user registers, the system should assign an empty list of followings to users' Profile.
  • When a new bLink is created, the system should assign an unique id to bLink.
  • When a new bLink is created, the system should assign the date of creation to bLink.
  • When a new bLink is created, the system should assign the owners' username to bLink.

The bLink

  • The bLink should have a unique id.
  • The bLink should have a date of creation.
  • The bLink should have a owner username.
  • The bLink should have a link.
  • The bLink should have a caption.
  • The bLink should contain a preview of the link if it is valid.
  • The bLink preview should be consist of title, description and image.
  • The bLink should contain an embedded button in preview which redirects the user to the link.
  • The bLink should contain the number of bookmarks.
  • The bLink should contain a bookmark button which is black if bookmarked and white otherwise.
  • The bLink should contain at most 1 space name of the bLink if assigned.
  • The bLink should contain the tag names of the bLink if assigned.

The Space

  • The Space should have unique name.

The Tag

  • The Tag should have a unique name.

Non-Functional Requirements

  • The App should be in English.
  • The App shall be developed with Python v3.8.
  • The App shall be developed by Django framework.
  • The frontend of the App should be developed with Bootstrap framework.
  • The App shall have a PostgreSQL database.
  • The App shall have a cold storage database.
  • The App should be containerized.
  • The Database should be containerized.
  • The App and Database should be orchestrized with docker-compose.
  • The App should be deployed to a VM.
  • The App shall be hosted on AWS.
  • The App should be deployed using a continuous integration/continuous delivery (CI/CD) pipeline to streamline the development and deployment process.
  • The software should have docstrings.
  • The Docstrings should have written in Epytext format.
  • The code should be modular and scalable.

Elicitation Questions

  • Is this App going to web based or mobile app or both?
  • Is this App going to be paid or free?
  • Does this App support third Party login or subscription (Google and Facebook)?
  • Do users have to register for this app?
  • Can this App interact with other Apps through an API?
  • Can this App enables to share the users content with other users?
  • Can this App enables to share the users content in other Applications?
  • Does this App have an cold storage Database?
  • Does the architecture of the App horizontally or vertically scalable?
  • How this App manages to load balancing under intense workloads?
  • Is this App going to be deployed on-premise or on cloud services? If so, which cloud service?
  • Does this App contain a advanced searching mechanism?
  • Can users within the App follow each other?
  • Can users specify the social media platforms to gather content?
  • Can users share the content of interest directly from other Applications?