View on GitHub

guild-hall

Quest-based engagement platform where communities complete adventures, not checklists

Guild Hall - Bounty Board Requirements

Document Version: 1.1 Last Updated: 2025-01-24 Feature: Bounty Board (MVP Release) Revision: Scope refined - solo quests only in V1, data export added


Table of Contents

  1. Overview
  2. User Roles
  3. Functional Requirements
  4. Non-Functional Requirements
  5. Data Model Considerations
  6. V1 Scope Summary
  7. Future Versions

Overview

Guild Hall is a quest-based engagement platform where a Game Master (GM) issues quests on a “Bounty Board” for users to accept and complete.

Core Concept: Transform goals into engaging quests with objectives, evidence submission, and GM review.

V1 Focus: Bounty Board feature with core quest lifecycle.


User Roles

User (Quester)

Game Master (GM)

Admin (Future)


Functional Requirements

FR1: Authentication & Authorization

ID Requirement V1 Future
FR1.1 Users authenticate via Email  
FR1.2 Users authenticate via Google OAuth  
FR1.3 Users authenticate via Apple OAuth  
FR1.4 GM has separate admin authentication  
FR1.5 Role-based access control (User, GM)  
FR1.6 Tiered GM roles (Admin, Moderator, Quest Creator)  
FR1.7 Guild-specific GMs (multi-tenancy)  

FR2: Bounty Board

ID Requirement V1 Future
FR2.1 Display list of available quests  
FR2.2 Show quest details (description, objectives, rewards, deadlines)  
FR2.3 Filter quests by category  
FR2.4 Search quests  
FR2.5 Show quest type indicator (solo/party/shared)  
FR2.6 Show acceptance deadline  
FR2.7 Show who else has accepted a quest  

FR3: Quest Acceptance

ID Requirement V1 Future
FR3.1 Users can accept any available quest  
FR3.2 No limit on concurrent quests  
FR3.3 No quest prerequisites/dependencies  
FR3.4 Cannot accept after acceptance deadline  
FR3.5 Join existing party for party quests  
FR3.6 Create new party for party quests  

FR4: Quest Structure

ID Requirement V1 Future
FR4.1 Quests contain multiple objectives  
FR4.2 Objectives can have dependencies (GM configurable)  
FR4.3 Objectives can be independent (any order)  
FR4.4 Objectives have specific requirements  
FR4.5 Objectives specify required evidence type  
FR4.6 Quest has completion deadline  
FR4.7 Quest has acceptance deadline  
FR4.8 Quest has category/theme  
FR4.9 Quest specifies type: solo, party, or shared  
FR4.10 V1: All quests are solo quests  

FR5: Objective Completion & Evidence

ID Requirement V1 Future
FR5.1 Users mark objectives as complete  
FR5.2 Users submit text evidence  
FR5.3 Users submit link (URL) evidence  
FR5.4 Users submit photo evidence  
FR5.5 Users submit file upload evidence  
FR5.6 Users submit video evidence  
FR5.7 Some objectives are self-certified (no evidence required)  
FR5.8 Locked objectives show dependencies clearly  

FR6: GM Review

ID Requirement V1 Future
FR6.1 GM receives notification of evidence submission  
FR6.2 GM can view submitted evidence  
FR6.3 GM can approve objective completion  
FR6.4 GM can reject with feedback  
FR6.5 User notified of approval/rejection  
FR6.6 User can resubmit after rejection  

FR7: Deadlines & Extensions

ID Requirement V1 Future
FR7.1 Quest has acceptance deadline  
FR7.2 Quest has completion deadline  
FR7.3 User can request extension when deadline passes  
FR7.4 GM can approve/deny extension requests  
FR7.5 Notify user of approaching deadline  

FR8: Rewards System

ID Requirement V1 Future
FR8.1 Points/XP awarded for quest/objective completion  
FR8.2 Badges/Achievements for milestones  
FR8.3 Leaderboard ranking users  
FR8.4 Real-world rewards attached to quests  
FR8.5 GM configures point values per quest/objective  

FR9: User Profile

ID Requirement V1 Future
FR9.1 View quest history (completed, abandoned, in-progress)  
FR9.2 View stats (points, quests completed, success rate)  
FR9.3 Display earned badges/achievements  
FR9.4 Show leaderboard position  
FR9.5 Activity feed (recent actions)  
FR9.6 Customizable avatar/display name  
FR9.7 Show join date/tenure  
FR9.8 Privacy controls (configure visibility)  

FR10: Social Features

ID Requirement V1 Future
FR10.1 View other users’ public profiles  
FR10.2 See who accepted a quest  
FR10.3 View others’ progress on shared quests  
FR10.4 Global activity feed  
FR10.5 Party management for party quests  

FR14: Data Export

ID Requirement V1 Future
FR14.1 Users can export their quest history  
FR14.2 Export includes completed quests, objectives, evidence  
FR14.3 Export format: JSON  
FR14.4 Export format: CSV  
FR14.5 GM can export all user data  

FR15: Smart Quest Creator

ID Requirement V1 Future
FR15.1 LLM-assisted quest creation  
FR15.2 Conversational wizard mode (step-by-step guidance)  
FR15.3 Generate & refine mode (quick draft from description)  
FR15.4 Auto-generate narrative context  
FR15.5 Suggest transformation goals  
FR15.6 Recommend evidence types per objective  
FR15.7 Suggest objective structure and dependencies  
FR15.8 Recommend point values and rewards  
FR15.9 UI placeholder in GM Dashboard  

FR11: GM Dashboard

ID Requirement V1 Future
FR11.1 View all quests and their status  
FR11.2 Create new quests  
FR11.3 Edit existing quests  
FR11.4 Archive/delete quests  
FR11.5 View all users and their progress  
FR11.6 Review pending evidence submissions  
FR11.7 Manage extension requests  
FR11.8 Configure quest categories  

FR12: Quest Templates & Management

ID Requirement V1 Future
FR12.1 Save quest as template  
FR12.2 Create quest from template  
FR12.3 Clone existing quest  
FR12.4 Recurring quests (auto-reissue on schedule)  

FR13: Notifications

ID Requirement V1 Future
FR13.1 In-app notifications for GM  
FR13.2 In-app notifications for users  
FR13.3 Email notifications  
FR13.4 Push notifications (mobile/browser)  
FR13.5 Configurable notification preferences  

Notification Triggers (V1):

FR16: Engagement Features

ID Requirement V1 Future
FR16.1 Skill tier system (5 levels: Apprentice→Legend)  
FR16.2 GM-configurable tier thresholds  
FR16.3 Tier progress visualization on dashboard  
FR16.4 Contextual greeting with priority rules  
FR16.5 Session-cached greeting (consistent per session)  
FR16.6 User activity streak tracking  
FR16.7 User-configurable weekend streak behavior  
FR16.8 Streak milestone celebrations (7, 14, 30 days)  
FR16.9 Rotating philosophy quotes on dashboard  
FR16.10 GM quote management interface  
FR16.11 Smart nudge banner (one at a time, dismissible)  
FR16.12 GM daily digest email (08:00 default)  
FR16.13 User weekly progress email (Monday 08:00 default)  
FR16.14 User email preferences (day, time, timezone)  
FR16.15 GM manual push for weekly emails  

Skill Tier Thresholds (Default):

Contextual Greeting Priority:

  1. Celebration (quest complete, tier advance)
  2. Action (approved objectives, deadline approaching)
  3. Progression (near tier milestone, streak milestone)
  4. Time (morning/afternoon/evening)

Nudge Banner Priority:

  1. Approved submissions ready to progress
  2. Approaching deadline (< 3 days)
  3. Recent celebration milestone
  4. Quest recommendation (if no active quests)

Non-Functional Requirements

NFR1: Performance

ID Requirement Target
NFR1.1 Page load time < 2 seconds
NFR1.2 API response time < 500ms
NFR1.3 Concurrent users supported 100

NFR2: Scalability

ID Requirement Target
NFR2.1 Initial user capacity < 100 users
NFR2.2 Active quests 1-10
NFR2.3 Data model supports multi-tenancy Yes (for future guilds)

NFR3: Security

ID Requirement Target
NFR3.1 OAuth 2.0 for social authentication Required
NFR3.2 Secure password storage (bcrypt/argon2) Required
NFR3.3 HTTPS everywhere Required
NFR3.4 Role-based access control Required
NFR3.5 Input validation and sanitization Required
NFR3.6 CSRF protection Required
NFR3.7 Rate limiting Required

NFR4: Availability

ID Requirement Target
NFR4.1 Uptime 99%
NFR4.2 Planned maintenance windows Off-peak hours

NFR5: Usability

ID Requirement Target
NFR5.1 Mobile-responsive design Required
NFR5.2 Accessibility (WCAG 2.1 AA) Target
NFR5.3 Intuitive navigation Required
NFR5.4 Clear feedback on actions Required

NFR6: Maintainability

ID Requirement Target
NFR6.1 Code documentation Required
NFR6.2 Automated testing > 80% coverage
NFR6.3 CI/CD pipeline Required

Data Model Considerations

The data model should support from day one:

  1. Multi-tenancy — Guild-specific data isolation (for future)
  2. Flexible permissions — Tiered GM roles
  3. Quest types — Solo, party, shared
  4. Objective dependencies — DAG structure for objective ordering
  5. Evidence polymorphism — Multiple evidence types
  6. Audit trail — Track all state changes
  7. Soft deletes — Archive rather than delete

Core Entities (Preliminary)

User
├── id, email, display_name, avatar_url
├── auth_provider, auth_id
├── points, created_at
└── privacy_settings

Quest
├── id, title, description, category_id
├── type (solo/party/shared)
├── acceptance_deadline, completion_deadline
├── points, status, created_by
├── is_template, template_id
└── guild_id (future)

Objective
├── id, quest_id, title, description
├── points, order, evidence_type_required
└── depends_on_objective_id (nullable)

UserQuest
├── id, user_id, quest_id, party_id
├── status (accepted/in_progress/completed/abandoned/expired)
├── accepted_at, completed_at, deadline
└── extension_requested, extension_granted

UserObjective
├── id, user_quest_id, objective_id
├── status (locked/available/pending_review/approved/rejected)
├── evidence_text, evidence_url
├── submitted_at, reviewed_at, reviewed_by
└── feedback

Party
├── id, quest_id, name
├── created_by, created_at
└── members[]

Achievement
├── id, name, description, icon
├── criteria_type, criteria_value
└── points

UserAchievement
├── user_id, achievement_id
└── earned_at

Notification
├── id, user_id, type, title, message
├── read, created_at
└── reference_type, reference_id

Category
├── id, name, description, icon
└── display_order

GM/Admin Roles (future)
├── user_id, role, guild_id
└── permissions[]

V1 Scope Summary

In Scope

Out of Scope (Future)


Future Versions

V2 Candidates

V3 Candidates


Appendix: Questionnaire Responses

# Question Answer
1 Quest dependencies? No, users can accept any quest freely
2 Objective order? Flexible, GM configures dependencies per quest
3 Evidence types? V1: Text, Link. Future: Photo, File, Video
4 Time constraints? Acceptance deadline, completion deadline, extension requests
5 Rewards? Points, badges, leaderboard, real-world rewards (simple)
6 Solo vs party? V1: Solo only. V2: Party, shared (GM choice per quest)
7 User profiles? Full: history, stats, badges, rank, feed, avatar, tenure
8 Visibility? Public profiles, privacy controls, leaderboard opt-out
9 GM roles? Single, multiple, tiered (guild-specific future)
10 Quest templates? Templates, clone, recurring, categories
11 Notifications? V1: In-app only (Supabase Realtime). Future: Email, push
12 Expected users? < 100
13 Quest volume? Few (1-10), curated
14 Offline support? Not required
15 Data export? V1: Required (JSON format, user’s own data)

Appendix: Specifications

Spec ID Title Parent ADR Status
SPEC-000 ADR Template ADR-000 Active
SPEC-001 Database Schema ADR-003 Active
SPEC-002 Row Level Security ADR-003, ADR-008 Active
SPEC-003 Authentication Flows ADR-003, ADR-008 Active
SPEC-004 Realtime Notifications ADR-006 Active
SPEC-005 Leaderboard and Privacy Rules ADR-007 Active
SPEC-006 Smart Quest Creator ADR-009 Draft (V2)

Document generated with assistance from the Quest Guide Revised with input from Cat (risk) and Owl (process)