Requirements Document for CMPE451 - bounswe/bounswe2024group12 GitHub Wiki
Chess Community Platform - Requirements Document
Glossary
- User: Any client of the application including unregistered and registered clients.
- Registered User: A user who has created an account and is logged into the application. Can interact with content, follow other users, and more.
- Admin: A special user who has all the functionalities of a registered user but can also manage and moderate the platform's content and users.
- FEN (Forsyth–Edwards Notation): A standard notation for describing a particular board position of a chess game.
- PGN (Portable Game Notation): A standard plain-text format for recording chess games, including the moves and related data.
- W3C Standards: Guidelines and standards set by the World Wide Web Consortium to ensure web accessibility and interoperability.
- Forum Rating: A system that tracks user reputation based on their interactions within the forum.
- User Level: Leveling system that tiers users according to their forum ratings and unlocks features at each level.
- Rookie: First user level, starting level of registered user.
- Specialist: Second user level, can do anything rookie can do but have additional features.
- Expert: Thirt user level, can do anything specialist can do but have additional features.
- Legend: Fourth user level, can do anything expert can do but have additional features.
Requirements
1. Functional Requirements
1.1. User Requirements
1.1.1. Account Management
- 1.1.1.1. Users shall be able to sign up by providing email, username, and password.
- 1.1.1.2. Registered users shall be able to log in using email and password.
- 1.1.1.3. Registered users shall be able to securely log out of their accounts.
- 1.1.1.4. Registered users shall be able to delete their accounts, which will:
- 1.1.1.4.1. Remove their profile from visibility.
- 1.1.1.4.2. Remove all of their content (e.g., posts, comments) from the platform.
- 1.1.1.4.3. Free up their email and username for future registrations.
- 1.1.1.5. Registered users shall be able to change their passwords.
- 1.1.1.6. Registered users shall be able to reset their passwords via email authentication.
- 1.1.1.7. Email addresses shall be verified for account activation.
1.1.2. Leveling System
- 1.1.2.1. Levels shall be assigned based on the forum rating.
- 1.1.2.2. Forum rating shall accumulate based on user interactions such as posts, likes, puzzle upvotes, and comments.
- 1.1.2.3. There should be four levels: Rookie, Specialist, Expert, and Legend.
1.1.3. Social Interaction
- 1.1.3.1. Registered users shall be able to follow or unfollow other registered users.
- 1.1.3.2. Legend users' likes/dislikes and puzzle upvotes/downvotes should be displayed separately, distinguishing their significance.
1.1.4. Content Interaction
1.1.4.1. Posts
- 1.1.4.1.1. Specialist users shall be able to create posts.
- 1.1.4.1.2. The platform shall support text, images, FEN notation, and PGN notation inside posts.
- 1.1.4.1.3. Users shall be able to add tags to categorize their posts.
- 1.1.4.1.4. Posts shall be commentable by specialist users.
- 1.1.4.1.3.1. Comments shall support text, images, FEN notation, and PGN files similar to posts.
- 1.1.4.1.5. The platform shall support hyperlinks and internal referencing:
- 1.1.4.1.4.1. External hyperlinks shall be supported.
- 1.1.4.1.4.2. Internal page references shall feature auto-completion for easy navigation.
- 1.1.4.1.6. Users shall be able to interact with posts as follows:
- 1.1.4.1.5.1. Like/Dislike functionality shall be available for all registered users.
- 1.1.4.1.5.2. Sharing posts via external links shall be supported.
- 1.1.4.1.5.3. Retweeting posts to add to their feeds shall be available to specialist users.
- 1.1.4.1.5.3. Bookmarking posts should be an available feature.
- 1.1.4.1.7. A main feed shall display posts from the entire site.
- 1.1.4.1.6. A follow feed shall display posts from users that the logged-in user follows.
- 1.1.4.1.8. Users shall be able to filter posts by tags:
- 1.1.4.1.8.1. Available tags shall include tournament organization, coaching, tip, recommendation, gathering, player, fun fact, and meme.
- 1.1.4.1.8.2. Administrators shall be able to add new tags as needed.
1.1.4.2. Archive
-
1.1.4.2.1. Games:
- 1.1.4.2.1.1. Users shall be able to jump from a game to the players who played the game.
- 1.1.4.2.1.2. Users shall be able to jump from a game to the tournament it was played in.
- 1.1.4.2.1.3. Games shall be explored with a visually animated chess board.
- 1.1.4.2.1.4. Games shall display the name of its opening.
- 1.1.4.2.1.5. At every board position, several other games which reached that position shall be listed.
- 1.1.4.2.1.6. Comments shall be able to be made under each board position of the game.
-
1.1.4.2.2. Players:
- 1.1.4.2.2.1. Users shall be able to jump from a player to games he/she played.
- 1.1.4.2.2.2. Users shall be able to jump from a player to tournaments he/she played in.
- 1.1.4.2.2.3. Players' information shall be listed (name, age, nationality, etc.).
- 1.1.4.2.2.4. Comments should be able to be made under each player profile.
-
1.1.4.2.3. Tournaments:
- 1.1.4.2.3.1. Users shall be able to jump from a tournament to games played in it.
- 1.1.4.2.3.2. Users shall be able to jump from a tournament to players who played in it.
- 1.1.4.2.3.3. Tournament information shall be listed (year, place, etc.).
- 1.1.4.2.3.4. Comments should be able to be made under each tournament.
1.1.4.3. Puzzles
- 1.1.4.3.1. Users shall be able to play puzzles.
- 1.1.4.3.2. Expert users shall be able to create puzzles, and other users shall be able to upvote/downvote them, affecting the original poster's forum rating.
1.1.5. Search
- 1.1.5.1. The platform shall support advanced search capabilities across all content types within the platform.
- 1.1.5.1.1. Full-Text Search: Users shall be able to perform full-text searches across posts, comments, games, and user profiles.
- 1.1.5.1.2. Faceted Filtering: Users shall be able to filter search results based on content type, tags, game properties, and date ranges.
- 1.1.5.1.3. Autocomplete and Suggestions: The search bar should provide real-time autocomplete suggestions and relevant search prompts.
- 1.1.5.1.4. Result Categorization: Search results shall be categorized by content type (e.g., posts, users, games) to facilitate easy navigation.
1.1.6. Analysis
- 1.1.6.1. The platform shall provide an analysis tool similar to Lichess's analysis board.
- 1.1.6.1.1. Interactive Chess Board
- 1.1.6.1.1.1. Users shall be able to input moves manually to set up positions.
- 1.1.6.1.1.2. The chess board shall support drag-and-drop functionality for moving pieces.
- 1.1.6.1.2. Game Analysis
- 1.1.6.1.2.1. The analysis tool should provide engine-based move suggestions and evaluations.
- 1.1.6.1.2.2. Users should be able to toggle engine analysis on and off.
- 1.1.6.1.2.3. The tool shall display move numbers, annotations, and evaluations.
- 1.1.6.1.3. Annotations and Comments
- 1.1.6.1.3.1. Users should be able to add comments to specific moves or positions.
- 1.1.6.1.3.2. The analysis board should support saving annotated games for future reference.
- 1.1.6.1.4. Import and Export
- 1.1.6.1.4.1. Users shall be able to import games using PGN files into the analysis tool.
- 1.1.6.1.4.2. Users shall be able to export analyzed games as PGN files.
- 1.1.6.1.5. Sharing Analysis
- 1.1.6.1.5.1. Users should be able to share their analysis boards or specific positions via links.
- 1.1.6.1.5.2. Shared analyses should be viewable by other users without requiring authentication.
- 1.1.6.1.6. Advanced Features
- 1.1.6.1.6.1. Opening Explorer: The tool should include an opening explorer to analyze common openings and their variations.
- 1.1.6.1.6.2. Endgame Tablebases: Integration with endgame tablebases should be available for precise endgame analysis.
- 1.1.6.1.6.3. Blunder Detection: The analysis tool should highlight blunders, mistakes, and inaccuracies in the game.
- 1.1.6.1.7. Semantic Browsing
- 1.1.6.1.7.1. Users shall be able to see top several games that were played in the past (in real life) and reached that analyzed position.
- 1.1.6.1.1. Interactive Chess Board
1.2. System Requirements
1.2.1. Moderation Capabilities
- 1.2.1.1. Admins shall be able to delete user accounts.
- 1.2.1.2. Admins shall be able to ban or unban users for a specified period.
- 1.2.1.3. Admins shall be able to edit or delete any post or comment.
- 1.2.1.4. Admins shall be able to manage (add, edit, delete) tags used for categorizing posts.
- 1.2.1.5. Admins shall be able to change users' profile pictures and details if necessary.
1.2.2. Content Management
- 1.2.2.1. Admins shall be able to approve or reject reported content flagged for violating community guidelines.
- 1.2.2.2. Admins should be able to feature or pin certain posts to the main feed.
2. Non-Functional Requirements
2.1. Usability
- 2.1.1. The application shall feature an intuitive user interface with clear navigation paths and interactive elements.
- 2.1.2. Users shall be able to easily find and access all essential features and functionalities.
- 2.1.3. The application shall provide informative feedback for user actions, such as successful registrations, login attempts, and error messages.
- 2.1.4. Design elements and layout shall be consistent across different pages to enhance user familiarity and usability.
2.2. Accessibility and Availability
- 2.2.1. The application shall be accessible via various web browsers, including Chrome, Firefox, Safari, and Edge.
- 2.2.2. The application shall be available in English.
- 2.2.3. The application shall comply with Web Content Accessibility Guidelines to ensure accessibility for all users.
- 2.2.4. The Android application shall support Android 5.0 and above.
2.3. Security
- 2.3.1. All passwords stored in the database shall be encrypted using industry-standard encryption methods.
- 2.3.2. User data shall be securely stored and protected against unauthorized access.
- 2.3.3. Email verification shall be required to prevent fraudulent account registrations.
2.4. Performance and Reliability
- 2.4.1. The application shall have response times of less than 100 ms for user interactions.
- 2.4.2. The application shall be capable of handling a large number of concurrent user requests efficiently.
- 2.4.3. The application shall maintain high availability with minimal downtime to ensure users can access the platform reliably.
2.5. Legal
- 2.5.1. The application shall comply with KVCC privacy regulations.
2.6. Standards
- 2.6.1. The system shall comply with W3C Standards to ensure interoperability and accessibility.