TreasureTrails/application_requirements.md

171 lines
8.6 KiB
Markdown
Raw Permalink Normal View History

2026-03-18 09:02:21 -05:00
# Treasure Trails - Development Stories
This document outlines the Epics and User Stories for the "Treasure Trails" online scavenger hunt application.
Base requirements:
1. All libraries and dependecies should be open source.
2. We will use OpenStreetMaps for all mapping.
3. This is meant to be a fun game.
## I. Epic: Game Master Functionality - Design, Manage, and Oversee Hunts
**Goal:** Enable users to design, manage, and oversee scavenger hunts.
### Story 1: Create a Scavenger Hunt
**As a Game Master, I need to create a scavenger hunt with configurable details so that I can design engaging and unique experiences.**
* **Requirements:**
* Ability to name the scavenger hunt.
* Ability to set a start date and time.
* Ability to choose between public and private visibility.
* Ability to add a description and prize details.
* Ability to define a location and search radius on OpenStreetMap for treasure locations.
* Ability to create and sequence "legs" or clues with descriptions and conditions (e.g., photo proof, purchase, etc.).
* Ability to see individual leg distances in km or miles.
* Ability to see total sum of different routes (combinations of legs) distnace in km or miles.
* Ability to set time limits per leg.
* Ability to set a time deduction penalty for navigation warnings.
* **Acceptance Criteria:**
* All fields are validated (e.g., name required, date in the future).
* OpenStreetMap integration works for location selection and searching.
* Leg creation is intuitive and supports different condition types.
* Game master can save a draft game.
* **Testing Steps:**
1. Create a new scavenger hunt with valid data.
2. Create a new scavenger hunt with invalid data (e.g., missing name, past date).
3. Verify that OpenStreetMap functionality allows for accurate location selection.
4. Verify leg creation and sequencing functionality.
* **Negative Testing:**
1. Attempt to create a hunt with blank fields. Verify appropriate error messages.
2. Attempt to save a hunt with a start date in the past. Verify an error.
3. Simulate slow network conditions during save. Ensure proper loading indicators and error handling.
### Story 2: Manage a Live Game (Game Master Dashboard)
**As a Game Master, I need a real-time dashboard to monitor and control a live scavenger hunt so that I can efficiently guide teams and ensure fair play.**
* **Requirements:**
* Display a list of participating teams with their current clue/location.
* Real-time map view showing team positions (approximate within 500m).
* Ability to view chat messages between teams and the Game Master.
* Ability to view photo submissions as proof of completion.
* Ability to advance teams to the next clue (individually or multiple teams).
* Ability to manually apply time deductions to teams.
* Ability to declare a winning team.
* Ability to disqualify teams.
* Display a leaderboard of clues completed.
* **Acceptance Criteria:**
* Dashboard updates in near real-time.
* Map icons clearly represent teams and their location.
* Time deduction functionality applies the penalty correctly, with countdown timer visible.
* Disqualification removes team from the game and displays their status.
* **Testing Steps:**
1. Simulate a live game and verify all dashboard elements update correctly.
2. Verify advancing teams and applying time deductions.
3. Verify disqualification functionality.
* **Negative Testing:**
1. Simulate high game participation to test dashboard performance under load.
2. Disconnect/reconnect the dashboard. Verify data is recovered correctly.
### Story 3: Public/Private Game Visibility
**As a Game Master, I need to control the visibility of my scavenger hunt so that I can cater to both open and invite-only experiences.**
* **Requirements:**
* Option to set game to 'Public' or 'Private' during creation.
* Public games listed on a searchable/filterable game list.
* Private games accessible only via invite.
* Option for the game master to publish a private game for public viewing after the game has started.
* **Acceptance Criteria:**
* Public games are displayed on the list.
* Private games are not shown on the list and require an invite link.
* Invite links are unique and secure.
* **Testing Steps:**
1. Create a public game and verify it appears on the game list.
2. Create a private game and confirm it's not visible on the list.
3. Create a private game and verify access with an invite link.
* **Negative Testing:**
1. Attempt to access a private game without an invite.
2. Try to modify game visibility without proper authorization.
## II. Epic: Team Member Functionality - Participate in Hunts
**Goal:** Allow users to join and participate in scavenger hunts.
### Story 4: Join a Scavenger Hunt & Team Formation
**As a User, I need to be able to find, join, and create a team for a scavenger hunt so that I can participate with friends or strangers.**
* **Requirements:**
* Browse and search for public scavenger hunts.
* Receive invites to private scavenger hunts.
* Create a team of 3-5 members.
* Ability for team members to elect a captain.
* View a list of games you will be a part of, including their scheduled date and time if any.
* Have a simple way to join a game when it starts if you are the team captain.
* **Acceptance Criteria:**
* Searching and filtering for public hunts works correctly.
* Invite links grant access to the correct game.
* Team creation enforces the size limits.
* Captain election is managed via the device during game startup.
* **Testing Steps:**
1. Search for a public game and join.
2. Receive an invite link and verify access.
3. Create a team and add/remove members.
4. Verify the captain election process.
* **Negative Testing:**
1. Attempt to join a hunt with an invalid invite link.
2. Try to create a team with fewer or more than the allowed number of members.
### Story 5: Team Device Interface During Game
**As a Team Captain, I need a mobile-friendly interface with real-time updates and tools to complete the hunt so that I can navigate and interact with the game effectively.**
* **Requirements:**
* Display the current clue.
* Display the team's position on the map.
* Display approximate positions of other teams (within 500m).
* Photo submission button.
* Chat functionality to communicate with the Game Master and other teams.
* Navigation warning system if the browser tab is closed or a new tab opened.
* **Acceptance Criteria:**
* Map displays accurate locations.
* Photo submissions are clear and easy to send.
* Chat messages are delivered in real-time.
* Navigation warnings are displayed appropriately with time deduction information.
* **Testing Steps:**
1. Verify all interface elements display correctly.
2. Test photo submission functionality.
3. Test chat functionality.
4. Simulate browser tab closure/new tab opening, and verify the warning message.
* **Negative Testing:**
1. Simulate slow network conditions.
2. Attempt to submit a corrupted photo.
## III. Epic: Public Spectator Functionality - View Live Progress
**Goal:** Enable anyone to view the progress of a public scavenger hunt.
### Story 6: Public Game Spectator Dashboard
**As a Spectator, I need to view the live progress of a public scavenger hunt so that I can follow along and experience the excitement.**
* **Requirements:**
* Display a map showing team locations (same approximation as teams have).
* Display a leaderboard of clues completed.
* Display team names and statuses.
* **Acceptance Criteria:**
* The spectator dashboard accurately reflects the real-time game progress.
* **Testing Steps:**
1. View a public game as a spectator.
2. Verify that the map and leaderboard update dynamically.
* **Negative Testing:**
1. Attempt to access a spectator dashboard of a private game.
**Additional Notes:**
* **Technology Stack:** Assumed web-based architecture (React/Angular/Vue.js, Node.js/Python/Ruby). Requires integration with OpenStreetMaps API.
* **Scalability:** Prioritize scalability for the Game Master dashboard and real-time updates (consider WebSockets).
* **Security:** Implement robust authentication and authorization.
* **Mobile-First Design:** Prioritize mobile usability for the Team Device Interface.