Requirements - bounswe/bounswe2026group4 GitHub Wiki
Table of Contents
- Project Overview
- Product Scope
- Glossary
- 1. Functional Requirements
- 2. Non-Functional Requirements
- 3. Open Decisions / To Be Finalized
- 4. Notes from Customer Meeting 1 (Captured Intent)
Project Overview
Local History Story Map is a digital storytelling platform designed to preserve community memory. It enables users to collect, upload, map, and explore:
- Oral histories from local residents
- Historical photographs
- Location-based community stories
- Timeline-based historical narratives
The platform connects places with memories, ensuring that valuable neighborhood stories are not lost over time.
Product Scope
Local History Story Map is a digital storytelling platform designed to:
- Enable users to explore community stories through an interactive map-based interface.
- Provide a story feed and dedicated story pages for discovering and reading local narratives.
- Support search and filtering (e.g., by location, time period, and other criteria) to make stories easier to find.
- Allow users to register and log in in order to contribute content and interact with stories.
- Let users submit stories with essential metadata such as location and time information.
- Support mixed-media storytelling, including text and optional images/videos.
- Offer interaction features such as liking, commenting on, and saving stories.
- Include a reporting and moderation workflow to handle inappropriate content and misuse.
- Encourage participation through a reward/gamification system.
By offering these features, the platform aims to preserve local memory, connect places with personal narratives, and make community history more accessible and engaging for everyone.
Glossary
- User: A person who uses the platform (e.g., visitor, registered user).
- Guest / Unregistered User: A user who is not logged in and has read-only access.
- Registered User: An authenticated user who can contribute and interact with content.
- Admin: A privileged user who can review reports and moderate stories/comments/users, and manage platform-wide moderation rules and policies.
- System: The software platform, including frontend, backend, database, and integrations.
- Authentication: The process of verifying a user's identity (e.g., login).
- Authorization: The process of granting permissions based on roles (e.g., guest, registered user, admin).
- Personal Data: Any information that can identify a user (e.g., name, email, location, IP).
- Session: A temporary authenticated state that keeps the user logged in.
- Story: A user-contributed historical narrative associated with a location and time period.
- Story Metadata: Structured information attached to a story (e.g., location, time period, tags, contributor visibility, media types).
- Story Card: A compact representation of a story in the feed view, displaying the title, location, date or time period, a short preview text (first 20 words), and media type indicators.
- Story Preview: A summary shown when a map pin is clicked, consisting of the place name, time information, and story title.
- Story Detail Page: A dedicated page for a single story displaying the full written narrative, all story metadata (location, time period, contributor name if visible, submission date, number of likes, and comments), embedded multimedia content, and options to like, comment, save, and report.
- Place Name: The venue, building, or location name provided by the contributor to identify the specific site a story is associated with.
- Tag: A short keyword label attached to a story to indicate its theme or topic, following lowercase dash-separated formatting (e.g.,
example-tag). - Media: Multimedia files attached to a story, including images, audio recordings, and video.
- Feed View: A list-based interface that displays stories as scrollable cards with title, location, date/time period, preview text, and media indicators.
- Map View: An interactive map interface that displays story locations as pins and supports search and filtering.
- Timeline: A feature that allows users to explore stories by time period, linked to a selected location or region.
- Report: A complaint submitted by users for inappropriate or problematic content.
- Notification: An in-platform alert delivered to a user in response to events such as new likes, comments, moderation actions, or badge awards.
- Points: A cumulative score awarded to users based on story submissions and engagement received.
- Badge: A visual achievement awarded to users upon reaching defined milestones in contributions or points.
- Contribution Count: The number of published stories associated with a user's account, displayed on their public profile.
- Core Functionality: The primary features of the platform (story discovery, contribution, and moderation).
- Bio: A short description which a user may add to their profile.
- Geolocation Radius Filter: A location-based filtering option that allows users to view stories within a selected distance (e.g., 1 km, 2 km, 5 km) from their current geographic location.
1. Functional Requirements
1.1 User Roles
1.1.1 Unregistered Users (Guests)
- 1.1.1.1 Unregistered users shall be able to view stories on the map interface.
- 1.1.1.2 Unregistered users shall be able to view stories in feed format.
- 1.1.1.3 Unregistered users shall be able to open and read full story details.
- 1.1.1.4 Unregistered users shall be able to view story metadata (location, time period, tags, contributor name if public).
- 1.1.1.5 Unregistered users shall be able to search locations on the map interface.
- 1.1.1.6 Unregistered users shall be able to filter stories based on metadata.
- 1.1.1.7 Unregistered users shall be able to register/create an account. Check section 1.2.1 for details.
- 1.1.1.8 Unregistered users shall have read-only access and shall not be able to perform restricted actions such as like, comment, save, submit, report stories.
1.1.2 Registered Users
- 1.1.2.1 Registered users shall be able to log in by providing email and password and log out securely.
- 1.1.2.2 Registered users shall be able to create and submit stories.
- 1.1.2.3 Registered users shall be able to edit their own stories.
- 1.1.2.4 Registered users shall be able to like stories.
- 1.1.2.5 Registered users shall be able to comment on stories.
- 1.1.2.6 Registered users shall be able to save stories.
- 1.1.2.7 Registered users shall be able to remove their like, comment and bookmark.
- 1.1.2.8 Registered users shall be able to report stories and comments.
- 1.1.2.9 Registered users shall be able to manage their profile information and visibility settings. Refer to sections 1.2.2 and 1.2.3 for details.
- 1.1.2.10 Registered users shall be able to do everything the unregistered users can do. Check section 1.1.1 for details.
- 1.1.2.11 Registered users shall be able to delete their accounts. This action shall anonymize their stories, unless the stories are also specifically deleted.
1.1.3 Admins
- 1.1.3.1 Admins shall be able to review reported stories.
- 1.1.3.2 Admins shall be able to remove stories that violate platform rules.
- 1.1.3.3 Admins shall be able to remove inappropriate comments.
- 1.1.3.4 Admins shall be able to ban users who violate policies.
- 1.1.3.5 Admins shall be able to review and remove inappropriate tags.
- 1.1.3.6 Admins shall be able to view reports and complaints about stories and comments submitted by users.
- 1.1.3.7 Admins shall be able to mark reports with a resolution outcome (e.g., no action, content removed, user banned).
- 1.1.3.8 Admins shall be able to manage platform-wide moderation rules and policies.
1.2 Authentication and Profile Management
1.2.1 Login/Registration
- 1.2.1.1 The system shall require a unique email address during registration.
- 1.2.1.2 The system shall validate the e-mail via a 6 digit validation code during registration.
- 1.2.1.3 The system shall require a unique user name during registration.
- 1.2.1.4 The system shall require a password that meets the following criteria during registration:
- At least 8 characters.
- At least 1 number, 1 capital letter and 1 small letter.
- 1.2.1.5 The system shall require password confirmation during registration.
- 1.2.1.6 The system shall authenticate users via email and password during log-in.
- 1.2.1.7 The system shall allow users to log out of their account.
- 1.2.1.8 The system shall allow users to change their password after logging in.
- 1.2.1.9 The system shall allow users to reset their password if they forget it via a link sent to their e-mails.
- 1.2.1.10 The system shall provide meaningful error messages for failed login attempts without exposing personal data.
1.2.2 User Profile Management
- 1.2.2.1 The system shall allow users to optionally provide and update the following fields:
- Profile photo
- Location
- Birth date
- Bio
- 1.2.2.2 The system should allow users to make any field mentioned in 1.2.2.1 private.
- 1.2.2.3 The system shall allow users to choose whether their user name is publicly visible on stories they post.
- 1.2.2.4 The system shall accept profile photo uploads that are less than 2 MB and in .jpg, .jpeg and .png formats.
- 1.2.2.5 The system shall allow users to see their saved stories in their profiles.
1.2.3 Public Profile Display
- 1.2.3.1 The system shall display the following on a user’s public profile page depending on their privacy preferences (refer to 1.2.2.2):
- User name
- Profile photo (if provided)
- Location (if provided)
- Contribution count (number of published stories)
- Bio (if provided)
- Birth year (if provided)
- Total points (refer to section 1.7.1 for details.)
- Earned badges (refer to section 1.7.2 for details.)
- 1.2.3.2 The system shall display contributor identity on stories according to the user’s visibility preference (refer to 1.2.2.3).
1.3 Story Display Features
1.3.1 Map View
-
1.3.1.1 The platform shall allow users to select a specific geographic location on the map when creating a story.
-
1.3.1.2 The system shall require users to provide a place name (venue/building/location name) in addition to selecting the geographic location.
-
1.3.1.3 The platform shall display stories on the map, each represented by a pin associated with a specific geographic coordinate.
-
1.3.1.4 If multiple stories exist at the same geographic coordinate, the system shall distinguish them based on place name and time information.
-
1.3.1.5 Clicking on a pin shall display a short story preview including:
-
Place name
-
Time information
-
Story title
-
-
1.3.1.6 The map shall support zooming and panning.
-
1.3.1.7 The map shall allow users to open the full story page by clicking on the preview.
-
1.3.1.8 The map shall update displayed stories based on active search queries and filters (refer to Section 1.3.5).
1.3.2 Feed View
-
1.3.2.1 The platform shall provide a feed view displaying stories in card format.
-
1.3.2.2 Each story card in the feed shall include:
- Title
- Location
- Date or time period
- Short preview text (first 20 words)
- Media indicators (icons for photo, audio, video if available)
-
1.3.2.3 The feed shall preserve applied filters and search criteria when a user clicks on a story and returns from the story page. Refer to section 1.3.5 for details about filters and searching.
-
1.3.2.4 The feed shall allow sorting by:
- Most recent
- Most popular (based on total number of likes)
-
1.3.2.5 The feed shall support continuous scrolling or pagination.
-
1.3.2.6 The feed shall display the most recent stories from the user's profile location if there are no applied filters and no search query.
1.3.3 Story Page
-
1.3.3.1 Selecting a story from the feed or map shall open a dedicated story page.
-
1.3.3.2 The story page shall display the full written narrative.
-
1.3.3.3 The story page shall display story metadata including:
- Location
- Year or approximate time period
- Contributor name (If visible)
- Submission date
- Number of likes
- Comments
-
1.3.3.4 The story page shall display embedded multimedia content (images, audio, video) if available.
-
1.3.3.5 Multimedia content shall be viewable or playable directly on the story page.
-
1.3.3.6 The story page shall display a reporting option for users to report inappropriate or problematic stories or comments.
1.3.4 Timeline Feature
- 1.3.4.1 The platform shall provide a timeline-based feature for exploring stories by time period.
- 1.3.4.2 The timeline feature shall allow users to view stories associated with a selected year, year range, or approximate period (e.g., “1980s”).
- 1.3.4.3 The timeline feature shall be linked to story location context (e.g., timeline for a selected place or region, where applicable).
- 1.3.4.4 Selecting an item from the timeline shall open the related story page.
1.3.5 Search and Filtering
-
1.3.5.1 The platform shall allow users to search stories by:
- Story title
- Story narrative text
- Tags
- Location name
-
1.3.5.2 The system shall support filtering based on:
- Time information (exact year, year range, decade, approximate period)
- Location (neighborhood, district, city, or region where available)
- Tag / topic / theme
-
1.3.5.3 The system shall allow users to filter stories by one or more tags.
-
1.3.5.4 The system shall allow combining search and filter criteria.
-
1.3.5.5 The system shall update map, feed, and timeline results consistently based on active search and filter criteria.
-
1.3.5.6 The system shall provide a clear way to remove individual filters or reset all active filters.
-
1.3.5.7 The system shall allow users to filter stories based on their current geographic location by selecting a distance radius (e.g., 1 km, 2 km, 5 km), and shall display stories located within that radius.
-
1.3.5.8 The system shall request location permission before using the user’s current geographic location for filtering.
-
1.3.5.9 If location permission is denied or unavailable, the system shall provide a meaningful message and prevent applying current-location-based filtering.
-
1.3.5.10 The system shall allow combining current-location radius filtering with other search and filter criteria.
-
1.3.5.11 The system shall update map, feed, and timeline results consistently when current-location radius filtering is applied.
1.3.6 Tags
- 1.3.6.1 The system shall allow the user to select from predefined tags or to create new tags
- 1.3.6.2 The system shall allow maximum 3 tags per story.
- 1.3.6.3 The system shall prevent duplicate tags on a single story.
- 1.3.6.4 The system shall enforce tag formatting to be lower case and dashes between words (example-tag).
- 1.3.6.5 The system should allow users to click on a tag to view related stories in feed view.
1.4 Story Submission and Content Management
1.4.1 Story Submission
-
1.4.1.1 The system shall require a minimum set of fields for story submission to support authenticity and discoverability:
-
Title
-
Written narrative text
-
Geographic location (map selection)
-
Place name (venue/building name)
-
Time information
-
-
1.4.1.2 The system shall support flexible time resolution for stories (e.g., exact year, approximate year, decade, or year range).
-
1.4.1.3 The system shall allow creator to attach tags (e.g., theme/topic) to stories.
-
1.4.1.4 The system shall allow users to submit stories associated with locations different from their profile location.
1.4.2 Media Upload and Management
-
1.4.2.1 The system shall support story media uploads including:
- Images
- Audio recordings
- Video
-
1.4.2.2 The system shall support stories that combine multiple media types in a single post.
-
1.4.2.3 The system shall validate media file type and file size during upload.
-
1.4.2.4 The system shall associate uploaded media with the story record and preserve media metadata needed for rendering.
1.4.3 Story Lifecycle and Visibility
-
1.4.3.1 The system shall maintain a story status, including at minimum:
- Published
- Removed
-
1.4.3.2 The system shall display story status to the story owner for their own submissions.
-
1.4.3.3 The system shall preserve moderation reason information when a story is removed. Refer to 1.5.2.3 for details.
1.5 Reporting and Moderation
1.5.1 Reporting and Moderation
-
1.5.1.1 The system shall require users to select or provide a reason for reporting stories or comments.
-
1.5.1.2 Report reasons shall support moderation use cases including, but not limited to:
- Spam
- False/misleading content
- Harassment or abuse
- Privacy violation
- Explicit/inappropriate media
- Other
-
1.5.1.3 The system shall store reports for admin review.
1.6 Notifications
1.6.1 Notification Events
- 1.6.1.1 The system should notify users when their story receives a new comment.
- 1.6.1.2 The system should notify users when their story receives a new like.
- 1.6.1.3 The system should notify users when their account/story is subject to moderation action.
- 1.6.1.4 The system should notify users when one of their stories is removed by moderation.
- 1.6.1.5 The system should notify users when a report they submitted has been resolved.
- 1.6.1.6 The system should notify users when they earn a new badge.
1.6.2 Notification Delivery
- 1.6.2.1 The system should provide in-platform notifications accessible via a notification panel.
- 1.6.2.2 The system should visually indicate unread notifications.
- 1.6.2.3 The system should allow users to configure notification preferences:
- Enable/disable specific notification types.
- Stop receiving notifications.
1.6.3 Notification Management
- 1.6.3.1 The system should store notifications associated with a user account.
- 1.6.3.2 The system should display notifications in reverse chronological order.
1.7 Reward and Gamification System
1.7.1 Points System
- 1.7.1.1 The system should award 50 points to users for publishing a story.
- 1.7.1.2 The system should award points when a story receives engagement:
- 2 points for each like.
- 4 points for each comment.
- 3 points for each save.
- 1.7.1.3 The system should deduct the given points if a like/comment/save gets rescinded or the story is removed.
- 1.7.1.4 The system should maintain a cumulative point total per user.
1.7.2 Badges and Achievements
- 1.7.2.1 The system should award a badge for registering.
- 1.7.2.2 The system should award a badge for 1, 3, 5, 10, 50 stories published.
- 1.7.2.3 The system should award a badge for 50, 100, 200, 500, 1000 points.
2. Non-Functional Requirements
2.1 Performance
2.1.1 The system shall respond to common user actions (opening feed, map interaction, opening a story page, submitting a comment, liking a story) within 2 seconds under normal usage conditions.
2.1.2 Search and filtering operations shall return results within 2 seconds for typical data sizes.
2.1.3 The system shall support at least 100 concurrent active users while maintaining the response time requirements defined in Section 2.1.1.
2.2 Usability
2.2.1 The platform shall provide a consistent interface across map, feed, timeline, and story pages.
2.2.2 All forms shall provide clear validation messages for incorrect or missing inputs.
2.2.3 The system shall require confirmation before irreversible actions such as account deletion or story deletion.
2.3 Reliability
2.3.1 The system shall prevent data loss during story submission.
2.3.2 If an operation fails, the system shall display a meaningful error message without exposing sensitive system details.
2.3.3 The system shall maintain consistency between stories and their associated media files.
2.4 Security & Privacy
2.4.1 All communication between client and server shall use HTTPS.
2.4.2 User passwords shall be stored securely using hashing mechanisms.
2.4.3 The system shall enforce role-based authorization for guest, registered user, and admin actions.
2.4.4 The system shall collect only the minimum required personal data for registration.
2.4.5 The system shall respect user privacy preferences for profile visibility and contributor identity.
2.4.6 The system shall use the user’s current geographic location for radius-based filtering only with the user’s permission.
2.5 Compatibility
2.5.1 The platform shall function correctly on modern web browsers (Chrome, Firefox, Edge).
2.5.2 The platform shall support responsive layouts for desktop and mobile screen sizes.
3. Open Decisions / To Be Finalized
The following items were identified during Customer Meeting 1 and require later refinement:
- Final filter categories (customer confirmed filtering is required, but exact filters were left to the team)
- Detailed story metadata schema (beyond minimum required fields)
- Whether there will be a “verified contributor / documentarian” role in addition to standard registered users
- Reward system design (if included in MVP or later)
- Notification triggers and channels (future phase)
- Verification workflow details (report-based only vs optional pre-review for some content)
4. Notes from Customer Meeting 1 (Captured Intent)
- The map interface is essential and should be central to the product experience.
- Unregistered users should have read-only access.
- Users should be able to post stories about places they are connected to, even if they do not currently live there.
- Search and filtering are absolute must-have features.
- Mixed-media storytelling (text + image/audio/video) is expected.
- Moderation is needed primarily to handle misuse, spam, privacy issues, and inappropriate content.
- Full pre-verification of all stories is not required initially; reporting + moderation is a practical starting point.