View on GitHub

guild-hall

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

Guild Hall — V1 Implementation Plan

Last Updated: 2025-01-24


Overview

This document outlines the technical implementation plan for Guild Hall V1. It covers phases, dependencies, and deliverables for building the Bounty Board MVP.


Tech Stack Summary

Layer Technology ADR
Frontend Next.js 14 (App Router) ADR-001
Hosting Netlify ADR-002
Backend Supabase (PostgreSQL, Auth, Realtime, Storage) ADR-003
Styling Tailwind CSS ADR-004
UI Components shadcn/ui ADR-005
State Management React Query + React Context ADR-006

Implementation Phases

Phase 0: Project Setup

Duration: Foundation work

0.1 Repository Setup

0.2 Supabase Setup

0.3 Development Infrastructure

0.4 CI/CD Setup

Deliverables:


Phase 1: Authentication

Duration: Core auth flows

1.1 Auth UI Components

1.2 Auth Logic

1.3 Protected Routes

1.4 Auth Callbacks

Deliverables:


Phase 2: User Foundation

Duration: Profiles and settings

2.1 User Profile

2.2 Privacy Settings

2.3 Public Profiles

2.4 Data Export

Deliverables:


Phase 3: Quest Display (User)

Duration: Bounty Board read experience

3.1 Bounty Board

3.2 Quest Detail

3.3 Category Management

Deliverables:


Phase 4: Quest Acceptance & Progress

Duration: User quest journey

4.1 Quest Acceptance

4.2 My Quests

4.3 Quest Progress View

4.4 Evidence Submission

4.5 Deadline Extensions

Deliverables:


Phase 5: GM Dashboard - Quests

Duration: Quest management

5.1 GM Layout

5.2 Quest List (GM)

5.3 Quest Creation

5.4 Objective Management

5.5 Quest Editing

5.6 Templates

5.7 Smart Quest Creator Placeholder

Deliverables:


Phase 6: GM Dashboard - Review

Duration: Evidence review workflow

6.1 Review Queue

6.2 Evidence Review

6.3 Review Actions

6.4 Extension Requests

6.5 User Overview

Deliverables:


Phase 7: Rewards & Leaderboard

Duration: Recognition system

7.1 Points System

7.2 Achievements

7.3 Leaderboard

7.4 Profile Badges

Deliverables:


Phase 8: Notifications

Duration: Real-time updates

8.1 Notification System

8.2 Notification Types

8.3 Realtime Integration

8.4 Notification Management

Deliverables:


Phase 9: Polish & Launch Prep

Duration: Final touches

9.1 Error Handling

9.2 Loading States

9.3 Responsive Design

9.4 Accessibility

9.5 Performance

9.6 Documentation

Deliverables:


File Structure

guild-hall/
├── app/
│   ├── (auth)/
│   │   ├── login/
│   │   ├── register/
│   │   └── reset-password/
│   ├── (dashboard)/
│   │   ├── layout.tsx
│   │   ├── quests/
│   │   ├── my-quests/
│   │   ├── profile/
│   │   ├── settings/
│   │   └── leaderboard/
│   ├── (gm)/
│   │   └── gm/
│   │       ├── layout.tsx
│   │       ├── quests/
│   │       ├── review/
│   │       ├── extensions/
│   │       └── users/
│   ├── auth/
│   │   ├── callback/
│   │   └── confirm/
│   ├── users/
│   │   └── [id]/
│   ├── layout.tsx
│   └── page.tsx
├── components/
│   ├── ui/              # shadcn/ui components
│   ├── auth/
│   ├── quests/
│   ├── objectives/
│   ├── notifications/
│   ├── leaderboard/
│   └── layout/
├── lib/
│   ├── supabase/
│   │   ├── client.ts
│   │   ├── server.ts
│   │   └── middleware.ts
│   ├── hooks/
│   ├── utils/
│   └── types/
├── contexts/
│   └── AuthContext.tsx
├── docs/
│   ├── adrs/
│   ├── specs/
│   ├── NORTH-STAR.md
│   ├── ROADMAP.md
│   ├── IMPLEMENTATION-PLAN.md
│   └── REQUIREMENTS.md
├── supabase/
│   ├── migrations/
│   └── seed.sql
└── public/

Database Migrations Order

-- 1. Core tables
001_create_users.sql
002_create_user_roles.sql
003_create_privacy_settings.sql
004_create_categories.sql
005_create_quests.sql
006_create_objectives.sql
007_create_user_quests.sql
008_create_user_objectives.sql
009_create_notifications.sql
010_create_achievements.sql
011_create_user_achievements.sql

-- 2. Functions
020_function_has_role.sql
021_function_is_gm.sql
022_function_update_user_points.sql
023_function_handle_new_user.sql
024_function_set_user_quest_deadline.sql
025_function_create_user_objectives.sql
026_function_unlock_dependent_objectives.sql
027_function_export_user_data.sql

-- 3. Triggers
030_trigger_on_auth_user_created.sql
031_trigger_set_deadline_on_accept.sql
032_trigger_create_objectives_on_accept.sql
033_trigger_unlock_objectives_on_approval.sql

-- 4. RLS Policies
040_rls_users.sql
041_rls_user_roles.sql
042_rls_privacy_settings.sql
043_rls_categories.sql
044_rls_quests.sql
045_rls_objectives.sql
046_rls_user_quests.sql
047_rls_user_objectives.sql
048_rls_notifications.sql
049_rls_achievements.sql
050_rls_user_achievements.sql

-- 5. Views
060_view_leaderboard.sql

-- 6. Seed data
070_seed_categories.sql
071_seed_achievements.sql

Key Dependencies

Phase 0 ─┬─► Phase 1 (Auth)
         │
         └─► Phase 2 (User) ──► Phase 4 (Quest Progress)
                                      │
Phase 3 (Quest Display) ◄─────────────┘
         │
         └─► Phase 5 (GM Quests) ──► Phase 6 (GM Review)
                                           │
Phase 7 (Rewards) ◄────────────────────────┘
         │
         └─► Phase 8 (Notifications)
                    │
                    └─► Phase 9 (Polish)

Testing Strategy

Unit Tests

Integration Tests

E2E Tests (Playwright)

Manual Testing


Launch Checklist

Pre-Launch

Environment

Data

Monitoring

Go-Live


“Plan the work, work the plan, adapt as you learn.”