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
Quick Links
For Developers
- API Reference - Comprehensive API reference
- Authentication - OAuth flows & JWT tokens
- Permissions - CASL authorization system
- Background Jobs - Queues & scheduled tasks
- Testing Guide - Write and run tests
For Guild Leaders
- Guild Roster System - How roster sync works
- Multi-Game Support - WoW, FFXIV, and more
- Guild Settings - Configure privacy & features
General
- Best Practices - Development guidelines
- Getting Started - Set up development environment
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 configurationapps/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.