Project Requirements - bounswe/bounswe2025group1 GitHub Wiki
- 🌱 Community Garden Planner-Software Requirements Specification (SRS)
| Version | Author | Date | Reviewer | Description |
|---|---|---|---|---|
| 1.0 | Başak | 26/02/2025 | Ceylanberk, Eymen | Initial Draft |
| 1.1 | Bahadır | 06/03/2025 | Eymen | Elaborated on some requirements and added more |
| 1.2 | İnan | 08/03/2025 | Eymen | Changed the structure of the page |
| 1.3 | Başak | 19/03/2025 | Bahadır | Employ changes from moodle feedback |
| 1.4 | Bahadır | 19/03/2025 | - | Revision After Review: Elaborations and Fixes |
| 1.5 | Tolga | 08/10/2025 | - | Collaborative updates to requirements of 451 |
| 1.6 | Bahadır | 26/11/2025 | - | MVP Milestone Update |
The Community Garden Planner is an online platform developed to streamline the management of community gardens. Its primary purpose is to provide users with tools to effectively organize gardening tasks, track the progress of completed and pending activities, and maintain detailed logs of garden management. By offering features such as task scheduling, progress tracking, and data logging, the platform aims to simplify garden maintenance and ensure that all tasks are completed efficiently. Additionally, it serves as a centralized repository for garden-related information, making it easy for users to access and update records.
The scope of the Community Garden Planner extends beyond task management to fostering a vibrant community of garden enthusiasts. It aims to create a social platform where users can connect, share their gardening experiences, seek advice, and collaborate on projects. The platform is designed to support community-building by enabling discussions, sharing tips, and showcasing gardening achievements. By integrating social features such as forums, experience-sharing sections, and advice columns, the Community Garden Planner aspires to transform gardening into a collective and enriching experience for all its users.
- 1.1: Users shall be able to register and create an account using email, username, name, surname, password, and optional location information.
- 1.2: The system shall allow users to log in and log out securely.
- 1.3: Users shall be able to edit all their profile information.
- 1.4: Users shall be able to upload optional profile pictures.
- 1.5: Users shall be able to follow other users.
- 1.6: Users shall be able to filter the forum feed to display only posts from users they follow.
- 1.7: The system shall recommend nearby gardens for users who provided their location information.
- 2.1: The system shall allow users to create, assign, update, and delete gardening tasks.
- 2.2: Users shall be able to track task progress with status updates (e.g., "Pending," "In Progress," "Completed").
- 2.3: The system shall provide a set of predefined task types (system-defined) and users shall have the option to create custom (user-defined) task types.
- 2.4: The system shall have tasks with a title, description, and optional deadline.
- 2.5: The system shall allow users to assign multiple assignees to tasks.
- 2.6: The system shall support tasks without assignees, allowing users to self-assign on a voluntary basis.
- 2.7: Users shall be able to accept or decline tasks assigned to them.
- 2.8: The system shall send task notifications to assigned users.
- 2.9: The system shall send notifications to task assigners about acceptance or decline of the task.
- 3.1: The system shall allow users to schedule periodical tasks with a period of choice.
- 3.2: The system shall support a calendar structure for periodic and aperiodic tasks based on periods and deadlines.
- 4.1: The system shall integrate with a weather API to fetch real-time weather data.
- 4.2: Users shall receive automated gardening reminders based on weather conditions from API.
- 5.1: Users shall be able to create, edit, and delete discussion posts.
- 5.2: Users shall be able to comment on forum posts.
- 5.3: The system shall provide system administrators and moderators with moderation rights, including the ability to delete inappropriate content.
- 5.4: The system shall provide moderators with authorization to delete inappropriate content and manage user reports.
- 5.5: The system shall provide read-only access to public forum posts for guests.
- 5.6: Members shall be able to report inappropriate posts and users to moderators.
- 6.1: The system shall in-app notifications for task updates, weather alerts, receiving followers and forum activity.
- 6.2: Users shall have the option to enable or disable notifications.
- 6.3: The system shall send notifications for tasks nearing their deadlines.
- 6.4: The system shall send notifications to garden managers upon a member requests to join their garden.
- 6.5: The system shall send notifications to garden members upon being accepted to the garden.
- 7.1.1: The system shall have distinct roles: System Administrator, Moderator, Member, and Guest.
- 7.1.2.1: The system shall have a single or a limited number of System Administrator(s) with full control over the platform.
- 7.1.2.2: The system shall let System Administrator(s) manage every forum post on the platform.
- 7.1.2.3: The system shall let System Administrator(s) manage any title in any garden.
- 7.1.2.4: The system shall let System Administrator(s) have the authority to close gardens if abuse of the software is detected.
- 7.1.2.5: The system shall let System Administrator(s) manage Moderators and system-related issues exclusively.
- 7.1.3.1: The system shall support a variable number of Moderators.
- 7.1.3.2: The system shall let Moderators manage forum content, including deleting inappropriate posts and comments.
- 7.1.3.3: The system shall let Moderators receive user reports and take appropriate actions.
- 7.1.3.4: The system shall let Moderators remove gardens based on user reports or observed violations.
- 7.1.3.5: The system shall let Moderators ban users who abuse the system.
- 7.1.4.1: Users who register to the platform shall automatically become Members.
- 7.1.4.2: The system shall let Members request to join a garden.
- 7.1.4.3: The system shall let Members leave a garden.
- 7.1.4.4: The system shall let Members create a garden.
- 7.1.4.5: The system shall let Members create, assign, and track tasks within the gardens they manage.
- 7.1.4.6: The system shall let Members create and comment on forum posts.
- 7.1.4.7: The system shall let Members edit only their own profile information.
- 7.1.4.8: The system shall let Members accept or decline tasks assigned to them.
- 7.1.5.1: The system shall let Guests (users without an account) have read-only access to public forum posts.
- 7.1.5.2: The system shall let Guests have read-only access to basic garden information (garden name, location etc.).
- 7.1.5.3: The system shall not let Guests create or edit tasks.
- 7.1.5.4: The system shall let Guests upgrade to Member status via the registration process.
- 7.2.1.1: The user who creates a garden shall automatically become the Manager of that garden.
- 7.2.1.2: The system shall let Managers assign tasks to members of the garden.
- 7.2.1.3: The system shall let Managers accept or remove members from their garden.
- 7.2.1.4: The system shall let Managers appoint other Members as additional Managers of the garden.
- 7.2.1.5: The system shall let Managers access to create, modify, and delete tasks.
- 7.2.1.6: The system shall let Managers create custom task types.
- 7.2.2.1: The system shall let Members who are accepted into a garden shall become Workers in that garden.
- 7.2.2.2: The system shall let Workers accept or decline tasks assigned by a Manager.
- 7.2.2.3: The system shall let Workers update the status of tasks assigned to them.
- 7.2.2.4: The system shall allow Workers to create events within their garden.
- 8.1.1: The system shall provide a chat section within each garden to support internal communication only among its members.
- 8.1.2: The system shall allow Managers to configure chat permissions (e.g., “Manager-only messages” or “All members can write”).
- 8.1.3: The system shall display messages in chronological order, including the sender’s name and time.
- 8.2.1: The system shall allow garden members to create events within the gardens they belong to.
- 8.2.2: The system shall allow event creators to define the event title, description, date, and time.
- 8.2.3: The system shall allow event creators to set the visibility level of each event as either Private (visible only to garden members) or Public (visible to all platform users).
- 8.2.4: The system shall allow users to vote on their attendance decision (e.g., “Going,” “Not Going,” “Maybe”).
- 9.1: The system shall handle up to 300 concurrent users.
- 9.2: The system shall have a response time for critical actions (task creation, forum posting) less than 2 seconds.
- 10.1: The UI must be responsive and comply with accessibility standards.
- 10.2: Users shall be able to navigate the system with minimal training.
- 11.1: The system shall have an uptime of 99.9%.
- 11.2: Data backups shall be performed periodically.
- 11.3: The system shall process synchronized data and provide updated information to the user.
- 12.1: The system shall follow a modular architecture to facilitate future updates.
- 12.2: Code documentation shall be maintained for all major modules.
- 13.1: The system shall provide descriptive text alternatives for all non-text content (e.g., images, icons, buttons) to ensure compatibility with assistive technologies such as screen readers.
-
13.2: The system shall utilize ARIA attributes (
aria-label,aria-describedby,aria-labelledby) where standard HTML semantics are insufficient to provide meaningful descriptions of interactive components. - 13.3: The system shall ensure a minimum color contrast ratio of 4.5:1 for standard text and 3:1 for large text and graphical elements, in accordance with WCAG 2.1 AA guidelines. [Source]
- 13.4: The system shall provide an optional high-contrast mode that can be toggled by the user to improve visibility for users with visual impairments.
-
13.5: The system shall support complete keyboard navigation for all interactive elements, including task management, forum interactions, and profile actions, using standard keyboard keys (
Tab,Shift+Tab,Enter,Space). -
13.6: The system shall use semantic HTML elements (e.g.,
<main>,<nav>,<header>,<section>,<button>) to enhance compatibility with assistive technologies and improve document structure. - 13.7: The system shall undergo accessibility testing using major screen readers (e.g., NVDA, VoiceOver) to verify accurate reading order, label associations, and element roles.
- 13.8: The system shall ensure that all user interface components are responsive and adaptable to a variety of screen sizes and device orientations.
- 13.9: The system shall allow text content and images to be resized up to 200% without loss of functionality, truncation, or layout issues.
-
14.1: The system shall support a broad range of assistive technologies, including but not limited to screen readers, voice control interfaces, and full keyboard-only navigation, to ensure accessibility for users with diverse abilities.
-
14.2: T The system shall support a map for addresses to enhance user experience and improve accessibility.
-
14.3: The system shall provide configurable user accessibility preferences, including options to adjust font size, color contrast, and interface language.
-
14.4: The system shall offer multiple theme options (light mode, dark mode, and a high-contrast accessibility mode), allowing users to select a display that best suits their visual needs.
-
14.5: The system shall support the inclusion and display of images within garden pages and forum posts to facilitate problem-solving, improve content discoverability, and reduce language barriers.
-
14.6: The system shall support display of images with different resolutions to accomodate for different data accesibility and possible connection problems.
- 15.1: The system shall implement a recognition mechanism that awards badges, achievements, or “Top Contributor” labels to users based on their activity, attended events and engagement within the platform.
- 15.2: The system shall support user engagement features such as likes, reactions, and upvotes for forum posts and comments to promote community interaction.
- 15.3: The system shall provide a “best answer” selection feature for forum questions to highlight high-quality contributions.
- 15.4: The system shall deliver in-app notifications to users when their contributions receive engagement (e.g., likes, replies, upvotes) or when activity-based milestones are achieved.
- 15.5: The system shall display personalized feedback indicating the impact of a user’s contributions on garden progress (e.g., “Your completed task increased the harvest yield by 20%”).
- 15.6: The system shall include impact summaries on user profile pages that visualize cumulative contributions and achievements to encourage ongoing participation.
- 16.1.1: The system shall use a translation framework (e.g., react-i18next) to separate UI text from code and store it in language resource files.
- 16.1.2: The system shall avoid hardcoded text in components; instead, all UI text shall reference translation keys.
- 16.2.1: The system shall support both left-to-right (LTR) and right-to-left (RTL) script layouts.
- 16.2.2: The system shall correctly mirror UI layouts for RTL languages such as Arabic or Hebrew.
- 16.3.1: The system shall use internationalization APIs (e.g., Intl.DateTimeFormat, Intl.NumberFormat) to display dates, times, numbers, and measurement units according to the user’s locale.
- 16.3.2: The system shall store dates and times in a standardized format (e.g., ISO 8601) and convert them to locale-specific formats for display.
- 16.4.1: The system shall include a lang attribute in the root HTML element and dynamically update it based on the selected language.
- 17.1.1: The system shall collect only the minimum personal data necessary for functionality (e.g., username, email, location if provided voluntarily).
- 17.1.2: The system shall apply anonymization or pseudonymization techniques to protect personally identifiable information (PII) wherever feasible (e.g., analytics, reporting).
- 17.1.3: The system shall obtain explicit user consent before collecting or processing personal data.
- 17.1.4: The system shall clearly communicate how user data is collected, used, and shared through a transparent Privacy Policy.
- 17.1.5: The system shall provide user-controlled privacy settings (e.g., controlling profile visibility, data sharing preferences).
- 17.1.6: The system shall employ masking the exact location of a user and only support neighboring information in order to avoid exposing a user's exact location.
- 17.2.1: The system shall make data flows and system decisions transparent and explainable to users.
- 17.2.2: The system shall maintain logs of all significant automated actions to ensure auditability.
- 17.2.3: The system shall document the assumptions, limitations, and potential biases of algorithms used.
- 17.3.1: The system shall be designed and tested to avoid reinforcing social, cultural, or demographic biases in datasets or user interactions.
- 17.3.2: The system shall ensure equitable access and experience for users across diverse demographics, languages, and abilities.
- 17.3.3: The system shall be periodically audited for fairness and unintended harms.
- 17.3.4: All public contributions and user recognition features (e.g., badges, achievements) shall be awarded based on transparent, merit-based criteria.
- 17.4.1: All communication shall be encrypted via HTTPS/TLS.
- 17.4.2: Confidential data (e.g. passwords) shall not be stored as plain-text, strong encryption/hashing algorithms shall be used (e.g. SHA-256).
- 17.4.3: The system shall implement multi-layered access control, ensuring that users can access only the data necessary for their role.
- 17.4.4: The system shall enforce strong authentication mechanisms (e.g., multi-factor authentication).
- 17.4.5: The system shall delete location data upon the user's request.
- 17.4.6: Regular security audits and penetration tests shall be conducted to assess and enhance the robustness of the platform’s security posture.
- 17.4.7: Latest available versions of development tools (frameworks, libraries etc.) shall be used.
- 17.4.8: PoLP (Principle of Least Privilege) shall be enforced.
- A. Glossary