Skip to main content

Sanctum Documentation

Welcome to the Sanctum documentation! This is a comprehensive World of Warcraft guild management platform built with modern web technologies.

What is Sanctum?

Sanctum is an API-first guild management platform that helps WoW guilds:

  • 📊 Manage Rosters - Sync and track guild members from Battle.net
  • 🔐 Control Access - Role-based permissions using CASL
  • 🎯 Plan Events - Organize raids, mythic+, and social events
  • 📈 Track Performance - Monitor attendance and participation
  • ⚙️ Configure Privacy - Guild-specific settings for roster visibility

Tech Stack

Backend

  • NestJS - TypeScript-first Node.js framework
  • Prisma - Type-safe database ORM
  • PostgreSQL - Primary database
  • Bull - Background job queue
  • CASL - Authorization and permissions

Frontend

  • React 19 - UI library
  • TanStack Router - Type-safe routing
  • TanStack Query - Server state management
  • HeroUI - Component library
  • Tailwind CSS - Utility-first styling

Integration

  • Battle.net OAuth - Authentication and WoW data
  • Discord OAuth - Account linking
  • WoW API - Guild roster and character data

For Developers

For Guild Leaders

General

Getting Started

Prerequisites

  • Node.js 20+
  • PostgreSQL 14+
  • pnpm 9+
  • Battle.net API credentials
  • Discord API credentials (optional)

Installation

# Clone the repository
git clone https://github.com/jophillips90/sanctum.git
cd sanctum

# Install dependencies
pnpm install

# Set up environment variables
cp apps/api/.env.example apps/api/.env
cp apps/web/.env.example apps/web/.env

# Run database migrations
pnpm db:migrate

# Start development servers (all can run simultaneously)
pnpm web # Frontend: http://localhost:5173
pnpm api # Backend: http://localhost:3001
pnpm docs # Documentation: http://localhost:3002

Environment Setup

See the .env.example files in each app for required environment variables:

  • apps/api/.env - Backend configuration
  • apps/web/.env - Frontend configuration

Project Structure

sanctum/
├── apps/
│ ├── api/ # NestJS backend
│ └── web/ # React frontend
├── docs/ # This documentation site
└── README.md

Key Features

Guild Roster Management

Automatically sync guild rosters from Battle.net, track member changes, and maintain roster history.

Role-Based Permissions

Fine-grained access control using CASL, with permissions synced from WoW guild ranks.

Privacy Controls

Guild-specific settings for roster visibility and data access.

Background Jobs

Automated daily roster syncs and avatar fetching with rate limiting.

Contributing

This is a passion project focused on quality over speed. See Best Practices for development guidelines.

Support

For questions or issues, please open an issue on GitHub.