Skip to content
Simão Barbosa edited this page Feb 27, 2026 · 1 revision

ER: Requirements Specification Component

PingPong Q&A helps communities share and build knowledge in a simple, organized way. By making it easy to ask questions, find answers, and recognize contributions, it encourages people to engage and learn together. With smart search, badges, and an interface that works on any device, the platform makes knowledge easier to discover, trust, and keep for the long term.

A1: PingPong Q&A

The PingPong Q&A system is being developed to provide communities with a structured, web-based environment for collaborative knowledge sharing. Its main goal is to enable users to ask and answer questions across different topics, allowing for collective learning, knowledge validation, and long-term knowledge retention. The platform is designed with an adaptive web interface, ensuring usability across desktops, tablets, and smartphones. It can be adopted in various contexts: communities of interest, professional organizations, or informal groups that want to exchange knowledge efficiently.

Traditional forums and chat platforms often lack structure, making it difficult to find, evaluate, and reuse information. PingPong Q&A addresses this gap by providing a centralized platform where contributions are stored in an organized way, evaluated by the community through votes, and ranked for relevance. This ensures higher-quality content, reduces redundancy, and improves trust and efficiency in knowledge exchange. Additionally, features such as reputation scores and badges encourage sustained participation and content quality.

The platform supports user authentication and account management, including registration, login and logout, password recovery, and account deletion with anonymization of shared data upon deletion. Each user has a profile that can be viewed and edited, including personal information, profile picture, and notifications. Core Q&A functionality allows registered users to post questions, provide answers, add comments, and vote on content. A reputation and badge system rewards participation and highlights quality contributions, while advanced search tools such as exact match, full-text, filtering, and tagging help users find relevant discussions quickly. Users can follow questions or tags to stay updated and receive notifications when new answers or votes occur. Administration features include managing user accounts, moderating reports, and managing tags. Contextual help and error messages guide users when filling out forms, and dedicated sections provide product information such as About Us, Main Features, and Contacts. The system ensures performance, robustness, accessibility, and security, with secure password storage and response times under two seconds.

The system distinguishes between different types of users. Visitors are non-authenticated and can browse content or sign up. Members are authenticated users who can interact with content and manage their own contributions. Authors are members who create content and can edit or delete it. Moderators are members with privileges to handle reports and moderate content. Administrators have full control over the system, including user and tag management.


A2: Actors and User stories

This artifact defines the system’s actors and their user stories, providing agile-based documentation that captures the functional requirements of the PingPong Q&A platform.

1. Actors

The actors for the collaborative Q&A system are represented in Figure 1 and described in the table below.

Actor UML Diagram{width="500"}

Figure 1: PingPong Q&A actors.

Identifier Description
User Generic user with access to public information, such as browsing questions, answers, and user profiles.
Visitor Unauthenticated user who can view content and register (sign-up) or sign in to the system.
Member Authenticated user who can ask questions, post answers, comment, vote, follow tags or questions, and manage their own content.
Author Authenticated user who created a question, answer, or comment and can edit or delete their own contributions.
Moderator Authenticated user with privileges to review reports, delete content, and edit question tags to maintain community standards.
Administrator Authenticated user responsible for managing users, system settings, and tags, as well as supervising and moderating all platform activity.
OAuth API External OAuth API that can be used to register or authenticate into the system.

2. User Stories

For PingPong Q&A, the user stories are presented in the following sections.

2.1. Visitor

Identifier Name Priority Responsible Description
US01 Sign-up / Registration prototype Simão Barbosa As a Visitor, I want to register an account, so that I can become an authenticated member and contribute to the community.
US02 Sign-in / Login prototype Dinis Lima As a Visitor, I want to log in, so that I can access member-only features.
US03 OAuth API Sign-up innovation Raul Oliveira As a Visitor, I want to register using an external OAuth provider (Google/GitHub), so that I can sign up quickly without creating new credentials.
US04 OAuth API Sign-in innovation Alexandre Ferreira As a Visitor, I want to sign in using an OAuth provider, so that I can authenticate using an existing trusted account.

2.2. User

Identifier Name Priority Responsible Description
US11 Exact Match Search prototype Raul Oliveira As a User, I want to perform an exact-match search over questions and answers, so that I can find specific phrases or precise content.
US12 Full-text Search prototype Alexandre Ferreira As a User, I want to perform full-text search across questions and answers, so that I can find relevant discussions using natural language queries.
US13 View Top Questions (Home Highlights) prototype Simão Barbosa As a User, I want to view the top (highest voted/accepted) questions on the homepage, so that I can quickly find high-quality content.
US14 Browse Questions (pagination/list) prototype Dinis Lima As a User, I want to browse questions in a paginated/list view, so that I can explore topics without needing to search.
US15 See Home / Landing Page product Simão Barbosa As a User, I want to access the home/landing page with highlights, so that I can quickly orient myself and discover content.
US16 Search Filters & Ordering product Dinis Lima As a User, I want to filter and order search results (by date, votes, relevance, tags), so that I can refine results to what matters most.
US17 View Notification List (public & personal) product Alexandre Ferreira As a User, I want to view notifications (for followed questions/tags or general announcements), so that I can stay updated on important activity.
US18 View Recent Questions product Raul Oliveira As a User, I want to view the most recent questions, so that I can see the latest discussions and activity.
US19 Browse Questions by Tags product Alexandre Ferreira As a User, I want to filter/browse questions by tag, so that I can focus on topics of interest.
US110 View Question Details product Simão Barbosa As a User, I want to open a question page to see the full question, answers, comments, and metadata, so that I can understand the context and existing responses.
US111 View Public User Profiles product Dinis Lima As a User, I want to view public profiles (username, reputation, badges, public contributions), so that I can evaluate contributors and their expertise.
US112 Access About / Main Features / Contacts product Raul Oliveira As a User, I want to read About, Main Features, FAQ and Contact pages, so that I can learn about the platform and how to contact the team.
US113 Contextual Help and Form Guidance innovation Alexandre Ferreira As a User, I want contextual help (such as placeholders, inline error messages, and tooltips) in forms, so that I can understand what to enter and correct mistakes easily.
US114 Dark Mode Toggle innovation Simão Barbosa As a User, I want a dark mode for the platform, so that I can use it comfortably in low-light environments.
US115 Copy Link Button innovation Alexandre Ferreira As a User, I want a one-click button to copy question or answer links, so that I can share content easily.
US116 Random Question of the Day innovation Dinis Lima As a User, I want to see a random question highlighted daily, so that I can discover interesting content outside my usual tags.

2.3. Member

Identifier Name Priority Responsible Description
US21 View Personal Feed (followed tags/questions) prototype Dinis Lima As a Member, I want to view a personal feed of questions and answers based on my followed tags and follows, so that I can see relevant, personalized content.
US22 Post Question prototype Simão Barbosa As a Member, I want to post a new question (title, body, tags, optional attachments), so that I can ask the community for help or share knowledge.
US23 Post Answer prototype Raul Oliveira As a Member, I want to post answers to questions, so that I can contribute solutions and be recognized by the community.
US24 Edit Own Profile (view & edit) prototype Alexandre Ferreira As a Member, I want to view and edit my profile (display name, bio, picture, preferences), so that my public presence is accurate and helpful.
US25 Login/Logout (session management) prototype Dinis Lima As a Member, I want to log out and have session management (remember me), so that my account is secure and accessible when needed.
US26 View My Questions prototype Simão Barbosa As a Member, I want a page listing my own questions (with status & metrics), so that I can manage and follow progress on my posts.
US27 View My Answers prototype Raul Oliveira As a Member, I want a page listing my own answers (with metrics), so that I can track my contributions and follow-up.
US28 Vote on Questions product Alexandre Ferreira As a Member, I want to upvote/downvote questions, so that I can help surface quality content and influence reputation.
US29 Vote on Answers product Dinis Lima As a Member, I want to upvote/downvote answers, so that the best answers are easier to find and contributors are rewarded.
US210 Comment on Questions product Simão Barbosa As a Member, I want to add comments to questions, so that I can request clarifications or provide short observations.
US211 Comment on Answers product Raul Oliveira As a Member, I want to add comments to answers, so that I can discuss or clarify details about an answer.
US212 Follow Question (watch) product Alexandre Ferreira As a Member, I want to follow/watch a question, so that I receive notifications on new answers, comments, and votes.
US213 Follow Tags product Dinis Lima As a Member, I want to follow/unfollow tags, so that my feed and notifications reflect topics I care about.
US214 Report Content (questions/answers/comments) product Simão Barbosa As a Member, I want to report inappropriate or low-quality content, so that moderators can review and act to maintain quality.
US215 Receive Notifications (answer to own question, votes) product Raul Oliveira As a Member, I want to receive notifications when someone answers my question or votes on my content, so that I can engage and respond promptly.
US216 Support and View Badges / Reputation History product Alexandre Ferreira As a Member, I want to see badges I've earned and reputation history, so that I can track progress and incentives.
US217 Delete Account (request anonymization) product Simão Barbosa As a Member, I want to request account deletion and anonymization of my public contributions, so that my personal data is removed while preserving knowledge.
US218 Recover Password (start) product Dinis Lima As a Member, I want to start the password recovery process (request reset email), so that I can regain access if I forget my password.
US219 Manage Notifications (read/snooze) product Raul Oliveira As a Member, I want to mark notifications as read or snooze them temporarily, so that I can manage my alerts.
US220 Receive Badge Award Notifications product Alexandre Ferreira As a Member, I want to receive a notification when I earn a new badge, so that I can stay aware of my achievements.
US221 Appeal for Unblock / Support Contact innovation Simão Barbosa As a Member, I want to submit an appeal if blocked, so that I can request reinstatement or clarification from admins.
US222 Quick Reaction Emojis innovation Alexandre Ferreira As a Member, I want to react to questions and answers with emojis, so that I can express my opinion quickly without leaving a comment.
US223 Notification Preferences innovation Raul Oliveira As a Member, I want to manage my notification preferences, so that I only receive alerts for events that are important to me.

2.4. Author

Identifier Name Priority Responsible Description
US31 Edit Question (own) prototype Dinis Lima As an Author, I want to edit my own question (title, body), so that I can clarify or correct information after posting.
US32 Delete Question (own) prototype Simão Barbosa As an Author, I want to delete my own question, so that I can remove content I no longer want public (subject to anonymization rules).
US33 Edit Answer (own) prototype Raul Oliveira As an Author, I want to edit my own answers, so that I can improve accuracy or fix mistakes.
US34 Delete Answer (own) prototype Alexandre Ferreira As an Author, I want to delete my own answer, so that I can remove outdated or incorrect contributions.
US35 Edit Question Tags (own question) prototype Dinis Lima As an Author, I want to edit the tags on my question, so that it is categorized correctly and reaches the right audience.
US36 Edit Comment (own) product Simão Barbosa As an Author, I want to edit my own comments, so that I can correct typos or clarify intent.
US37 Delete Comment (own) product Raul Oliveira As an Author, I want to delete my own comments, so that I can remove off-topic or regrettable remarks.
US38 Mark an Answer as Accepted (question author) product Alexandre Ferreira As a Question Author, I want to mark one answer as accepted/correct, so that future readers can quickly identify the preferred solution.

2.5. Moderator

Identifier Name Priority Responsible Description
US41 Review and Manage Content Reports prototype Simão Barbosa As a Moderator, I want to view and triage reported content with context and history, so that I can decide on appropriate moderation actions.
US42 Delete Content (questions/answers/comments) prototype Dinis Lima As a Moderator, I want to delete or remove content that violates rules, so that the community remains safe and high-quality.
US43 Edit Question Tags (global) product Raul Oliveira As a Moderator, I want to edit or retag questions (not just my own), so that content is discoverable and correctly classified.
US44 Warn / Temporarily Suspend Users (moderation actions) product Alexandre Ferreira As a Moderator, I want to issue warnings or temporary suspensions, so that repeated offenders are deterred while preserving due process.
US45 Manage and Close Duplicate / Low-quality Questions innovation Simão Barbosa As a Moderator, I want to flag, merge, or close duplicate or low-quality questions, so that the knowledge base remains concise and useful.

2.6. Administrator

Identifier Name Priority Responsible Description
US51 Manage Tags (create/edit/delete, synonyms) prototype Dinis Lima As an Administrator, I want to manage tags (create, merge, delete, add synonyms), so that taxonomy is consistent and searchable.
US52 Administer User Accounts (search/view/edit/create) prototype Simão Barbosa As an Administrator, I want to search for, view, edit, and create user accounts (including promoting to moderator/admin), so that I can maintain community membership and roles.
US53 Enforce Account Deletion Anonymization Rule prototype Raul Oliveira As an Administrator, I want the system to anonymize contributions upon account deletion (retain content but remove PII), so that privacy rules are respected while preserving knowledge.
US54 Delete User Account prototype Alexandre Ferreira As an Administrator, I want to delete user accounts when necessary, so that I can remove inappropriate accounts in accordance with platform policies.
US55 Block and Unblock User Accounts product Simão Barbosa As an Administrator, I want to block/unblock user accounts, so that I can enforce platform rules and handle appeals.
US56 Support Administrator Accounts & Permissions product Dinis Lima As an Administrator, I want to manage administrator accounts and permissions, so that responsibilities and access are correctly assigned.
US57 Monitor System Performance & Logs (TR: performance/robustness) product Raul Oliveira As an Administrator, I want dashboards and logs to monitor response times, errors, and system health, so that I can ensure the platform meets performance and robustness requirements.
US58 Configure Platform-wide Settings (notifications, email templates, security) innovation Alexandre Ferreira As an Administrator, I want to configure notification rules, email templates, and security policies, so that the system behavior matches community needs and compliance.

3 Supplementary Requirements

This section contains the business rules, technical requirements, and restrictions defined for PingPong Q&A.

3.1. Business rules

A business rule establishes a guideline or restriction that shapes how the system or organization operates, ensuring consistent behavior and alignment with business objectives.

Identifier Name Description
BR.011 Account Deletion and Data Anonymization Upon account deletion (FR.014), shared user data (e.g. comments, reviews, likes) is kept but is made anonymous.
BR.101 Administrator Participation Administrators are participating members of the community, i.e., they can post or vote on questions or answers.
BR.102 Edit Visibility Questions and answers edited after being posted should have a clear indication of the editions.
BR.103 User Badges User badges are dependent on the likes and dislikes received on their questions and answers, and also on specific actions performed by the user (e.g. first question, first answer, etc.).
BR.104 User Scoring System A user’s score increases or decreases according to votes on their questions and answers.
BR.105 Content Moderation Users must be able to report inappropriate or offensive content (questions, answers, or comments) to sent for review by moderators.
BR.106 Voting Limits A user can only vote once (either upvote or downvote) per question or answer.
BR.107 Tagging System Each question must include at least one relevant tag to facilitate categorization and searchability.
BR.108 Badge Revocation If a user’s content is removed for violating rules, related badges and reputation points should be recalculated accordingly.
BR.109 Date Consistency All date-related fields in the system must maintain logical consistency. For example, an exit date must always be greater than or equal to the corresponding entry date.

3.2. Technical Requirements

Technical requirements define the technical characteristics and constraints that the system must fulfill.

Identifier Name Description
TR.01 Performance (CRITICAL) The system should have response times shorter than 2 seconds to ensure the user's attention. This is critical to maintain user engagement and prevent frustration.
TR.02 Robustness The system must be prepared to handle and continue operating when runtime errors occur.
TR.03 Scalability (CRITICAL) The system must be prepared to deal with the growth in the number of users and their actions. This ensures the platform can support a growing community without degradation of performance.
TR.04 Accessibility The system must ensure that everyone can access the pages, regardless of whether they have any handicap or not, or the web browser they use.
TR.05 Security (CRITICAL) The system must store user passwords securely. Protecting user credentials is essential for privacy, trust, and regulatory compliance.
TR.06 Availability The system must be available 99% of the time in each 24-hour period.
TR.07 Maintainability The system’s source code should be modular and well-documented to facilitate maintenance and updates.
TR.08 Data Integrity The database must ensure referential integrity, preventing orphaned records or inconsistent relationships between tables.
TR.09 Portability The system should be deployable across major operating systems (Linux, Windows, macOS) without major modifications.
TR.10 Browser Compatibility The system must support modern browsers (Chrome, Firefox, Edge, Safari) with consistent layout and functionality.
TR.11 Database Technology PostgreSQL must be used as the database management system.
TR.12 Server Framework Laravel must be used as the main web framework for the PHP backend.
TR.13 Virtualization Environment The entire system must be deployable and tested within Docker containers to ensure environment consistency and portability.
TR.14 Web Server NGINX must be used as the web server for deployment and testing. Alternative web servers are not permitted unless explicitly approved.
TR.15 Client Technologies The front-end must be implemented using HTML, CSS, and JavaScript. The use of additional client libraries or frameworks (e.g., React, Vue) requires teacher authorization.

3.3. Restrictions

A restriction limits the degree of freedom in the search for a solution.

Identifier Name Description
C.01 Launch Deadline The system must be fully operational before the official platform launch event to allow community registration and early interaction.
C.02 Documentation Language All project documentation must be written in either Portuguese or English, maintaining consistency across all project artifacts.
C.03 Writing Quality All written documentation must follow a technical writing style that is simple, precise, and unambiguous.

A3: Information Architecture

The goal of this artifact is to define the website’s information architecture through a structured sitemap and corresponding wireframes. This way we can establish a clear navigation, content hierarchy, and user interaction flows to support an intuitive and consistent user experience.

1. Sitemap

sitemapPingPong.drawio{width=638 height=600}

Figure 2: PingPong Q&A sitemap.

2. Wireframes

Wireframes illustrate the layout and structure of each page, showing how content and features are organized for user interaction. For this project, the wireframes for the Question Details page (UI09) and the User Profile page (UI14) are shown in Figures 3 and 4.

UI09: Question Details

question_page{width=900 height=486} Figure 3: PingPong Q&A's Question Details page wireframe.

UI14: User Profile

user_profile_page{width=900 height=491} Figure 4: PingPong Q&A's User Profile page wireframe.


Revision history

Changes made to the first submission:

  1. Edited US112, added US223 and updated sitemap to match current structure.
  2. Edited wireframes layout.

GROUP2522, 07/10/2025