System Requirements - bounswe/2021SpringGroup1 GitHub Wiki
Here are several platforms that features a community system.
- Facebook: One of the most popular social media and social networking platform. While it does not directly have a community based structure, it features a user-created groups system with many features.
- Reddit: A social news platform where users can create or post content on both public and private communities which are called "subreddits".
- Discord: A VolP and instant messaging platform. It features a community system in which each community is called a "server", where users can join public or private servers to chat and voice chat with other members of those servers.
- Tumblr: A social networking and microblogging platform. It supports a group blog feature where multiple users can edit or post on a single blog. Users can also chat on these shared blogs.
- VK: A social media and social networking platform that is mostly popular on Russia. Its general structure is nearly identical to Facebook.
- 4Chan: A imageboard website that has no user registration system. Its users can anonymously post images or texts in fixed threads of various topics including maths, science, music and politics.
Platform | User created communities | News Feed | Marketplace | Multimedia Sharing | Tags | Event sharing | Privacy settings | Friends/Followers | Direct Messaging | Recommendation System |
---|---|---|---|---|---|---|---|---|---|---|
Yes | Yes | Yes | Video, Image, GIF | Yes | Yes | Yes | Yes | Yes | For communities and friends | |
Yes | Yes | No | Video, Image, GIF | Yes | No | Yes | No | Yes | For communities | |
Tumblr | Yes | Yes | No | Video, Image, GIF | Yes | No | Yes | Yes | Yes | No |
Discord | Yes | No | No | No | No | No | Yes | Yes | Yes | No |
VK | Yes | Yes | No | Video, Image, GIF | Yes | Yes | Yes | Yes | Yes | For communities and friends |
4Chan | No | No | No | Video, Image, GIF | No | No | No | No | No | No |
- Community: Used in this context as online communities, which is a type of community that interacts through a digital platform.
- Event sharing feature: A feature that enables posting a event announcement with location, dress code and other relative information. Also, it is common for this feature to include a poll on interest over that event.
- Friends/Followers feature: A feature typically seen in social networking platforms. It enables a form of online connection between users that usually gives permission see, and comment on each of their posted contents. One important difference between friending and following someone over these networks is that the former is a mutual relationship while latter is one-sided.
- Imageboard: A type of internet forum where users typically posts images with text to talk and discuss about various topics.
- Instant Messaging : A type of technology that provides real time communication over internet.
- User: A person that uses a digital platform.
- Marketplace: Used in this context as an online platform where users can trade goods and commodities.
- Microblogging: A specific type of blogging where both length and file size of a blog is substantially limited.
- News Feed: A special system where users access a accumulation of online content which are collected from several sources on the users choosing.
- Social Media: Digital platforms that enables users to create and share contents with other users.
- Social Network: Digital platforms where each user can find, connect and communicate with other users based on their hobbies, careers and other interests.
- Tag: A keyword that can be assigned to any kind of data that generally enables easy and fast access on it later on.
- VolP: Abbreviation for Voice over Internet Protocol, which is the general name for communication technologies for multimedia data transfer over Internet Protocols.
1.1 User Requirements
-
1.1.1 Account Features
-
1.1.1.1 Registration
- 1.1.1.1.1 A user shall be able to register by providing a valid e-mail address, a username, and a strong password.
- 1.1.1.1.2 Users enter their password 2 times to prevent typos.
- 1.1.1.1.3 E-mail addresses of users must be unique.
- 1.1.1.1.4 Users shall determine a unique username.
- 1.1.1.1.5 Users must confirm their e-mail adresses.
- 1.1.1.1.6 Users shall be able to register by providing their twitter or facebook social media accounts.
-
1.1.1.2 Log in
- 1.1.1.2.1 Users shall be able to log in to their account with their email/username and password.
- 1.1.1.2.2 If a user logged in to their account with their phone, then the next time they open the app they will be logged in automatically.
- 1.1.1.2.3 Users shall be able to login by providing their social media account which they used during registration.
- 1.1.1.2.4 When a user log in, they will directed to their homepage.
-
1.1.1.3 Changing password/username
- 1.1.1.3.1 Users shall be able to change their username if the username they wish to use is available.
- 1.1.1.3.2 Users shall be able to change their password with e-mail confirmation.
-
1.1.1.4 Account Privacy
- 1.1.1.4.1 Users shall be able to make their profile public or private.
- 1.1.1.4.2 Users shall be able to accept follow requests by permission or immediately.
- 1.1.1.4.3 Users shall be able to block other users so those users can not see their profile/posts.
-
1.1.1.5 User Privacy
- 1.1.1.5.1 Users can choose whether their activities are public, private or followers only. (their likes/dislikes,posts, comments, the events they attended, etc.).
- 1.1.1.5.2 Users can choose whether the list of groups they are a member of is public, private or followers only.
- 1.1.1.5.3 The username and profile picture of a user are both public.
- 1.1.1.5.4 Users need to accept the privacy policy before registration.
- 1.1.1.5.5 A user can block other users. Blocked users can't see the activities of that user and also can't message them.
-
-
1.1.2 Community Features
- 1.1.2.1 A user shall be able to create a community by specifying a unique name and a description.
- 1.1.2.2 In communities, users shall be able to share posts related to that community.
- 1.1.2.3 In communities, users shall be able to comment and react(like) on other users posts.
- 1.1.2.4 In communities, users shall be able to arrange events with details
- 1.1.2.5 Communities can be public or private.
-
1.1.3 Moderating Features
- 1.1.3.1 Communities needs moderators for group chats to prevent ill behaviour(racism, harassing, trolling etc.)
- 1.1.3.2 Communities can change moderators by using poll when necessary.
- 1.1.3.3 Moderators can ban users if the users engage in an ill behaviour.
- 1.1.3.4 Moderators and community creator should put up some rules for newcomers to behave.
-
1.1.4 Community Privacy
- 1.1.4.1 The communities can be public or private (members only).
- 1.1.4.2 The join requests of users to private communities must be approved by a community moderator.
- 1.1.4.3 Users can join public communities freely.
- 1.1.4.4 Only community members can share posts in a community.
- 1.1.4.5 Moderators can kick/ban members who engage in an ill behaviour (racism, harassing, trolling, etc.).
-
1.1.5 Event Privacy
- 1.1.5.1 The events of a community can be public or private.
- 1.1.5.2 The event organisations in a community must be approved by a community moderator.
- 1.1.5.3 The users who will attend an event will be updated if there are any changes in the plan of that event.
- 1.1.5.4 The private informations of an event (meeting time, exact location, etc.) will only be shared with the attending users.
- 1.1.5.5 The event organisers are allowed to choose which members will attend their event.
1.2 System Requirements
-
1.2.1 Notification
- 1.2.1.1 System notifies users when they get direct messages.
- 1.2.1.2 System notifies users when there is a new post in their communities.
- 1.2.1.3 System notifies users when people like their posts.
- 1.2.1.4 System notifies users when people comment their posts.
- 1.2.1.5 System notifies users when people like comments.
- 1.2.1.6 System notifies users when people comment comments.
-
1.2.1.7 System gives an option to users disallow notifications that come from
- 1.2.1.7.1 direct messages
- 1.2.1.7.2 posts
- 1.2.1.7.3 comments
- 1.2.1.7.4 likes
-
1.2.2 Recommendation
- 1.2.2.1 System recommends communities to the users according to their communities.
- 1.2.2.2 System recommends the most followed communities to the users.
- 1.2.2.3 System recommends posts to the users according to their likes or comments.
- 1.2.2.4 System recommends the most followed posts to the users.
- 1.2.2.5 System recommends users according to the users it follows.
- 1.2.2.6 System recommends users when people comment their posts.
-
1.2.3 Searching
- 1.2.3.1 Users can search other user accounts.
- 1.2.3.2 Users can search for communities.
- 1.2.3.3 Users can search for posts in a community.
- 1.2.3.4 Users can search for location.
-
1.2.4 Filtering
-
1.2.4.1 System allows users to filter communities by
- 1.2.4.1.1 Name
- 1.2.4.1.2 Link
- 1.2.4.1.3 Number of likes
- 1.2.4.1.4 Number of comments
- 1.2.4.1.5 Number of members
- 1.2.4.1.6 Tags
- 1.2.4.1.7 Location
-
1.2.4.1 System allows users to filter communities by
-
1.2.5 Home Page
- 1.2.5.1 Users should be able to see posts from their communities in their home page.
- 1.2.5.2 Users should be able to search for posts/users/communities from home pages search bar.
- 1.2.5.3 Users should be able to like or comment to posts on their home page.
- 1.2.5.4 Users should be able to filter posts by keyword or tags.
-
1.2.6 Users Subscribed Communities Page
- 1.2.6.1 Users should be able to see communities they subscribed.
- 1.2.6.2 Users should be able to search for communities.
- 1.2.6.3 Users should be able to see their role in that community (moderator or normal user)
- 1.2.6.4 Users should be able to sort their communities by various criteria (latest activity/most popular/moderated communities first etc.)
- 1.2.6.5 Users should be able to see how many post shared on that community after their last visit.
-
1.2.7 Community Page
- 1.2.7.1 Users should be able to see posts from that community in that communities page.
- 1.2.7.2 Users should be able to like or comment posts from that community.
- 1.2.7.3 Users should be able to report posts from that community for ill behaving.
- 1.2.7.4 Users should be able to create a new post.
- 1.2.7.5 Users should be able to sort post by various criteria.
- 1.2.7.6 Users should be able to search for posts with keywords from search bar.
- 1.2.7.7 Moderator users should be able to see join requests for that community.
- 1.2.7.8 Moderator users should be able to remove posts or ban users from that community.
- 1.2.7.9 Posts must support multiple data field types including text, image, location.
- 1.2.7.10 Users must use a pre-defined datatype template for posting.
- 1.2.7.11 Users should be able to add existing tags to their posts.
-
1.2.8 Settings Page
- 1.2.8.1 Users should be ablo to change their accounts privacy options.
- 1.2.8.2 Users should be able to change mode of the app (light and dark mode).
- 1.2.8.3 Users should be able to disable notifications for direct messages/new posts/pending requests etc.
- 1.2.8.4 Users should be able to log out from the app.
- 1.2.8.5 Users should be able to change their username if that name is availabble.
- 1.2.8.6 Users should be able to add profile pictures from settings menu.
2.1 Availability
- 2.1.1 Application shall be available on Android based mobile application stores.
- 2.1.2 System shall be accessible using modern web browsers.
2.2 Standards
- 2.2.1 The semantic taggings should be supported with Wikidata.org
- 2.2.2 The system must follow the rules of W3C Activity Streams Standards 2.0
2.3 Privacy
- 2.3.1 Users shall agree to the User Terms & Policy Agreement.
2.4 Security
- 2.4.1 Usernames and e-mails must be unique for each user.
- 2.4.2 There should be roles which defines who can what.
- 2.4.3 We can use JWT or cookies to authenticate users
2.5 Performance
- 2.5.1 Backend must be written for applications. We choose Python: Django.
- 2.5.2 Frontend must be written for applications. We choose React.
-
2.5.3 Database is important. We have options.
- MongoDB
- Mysql
- 2.5.4 Mobile application will be written usin React Native.