Skip to content

origin-finkle/RaidPlanner

Repository files navigation

Origin Raid Planner

Origin Raid Planner is a full-stack raid planning application built for World of Warcraft guild officers. It centralizes roster management, raid signups, composition building, Discord publication, and weekly operational follow-up in a single workflow-oriented tool.

The project is designed around real officer constraints: balancing multiple raids across a week, handling mains and rerolls, publishing actionable information to Discord, and reducing spreadsheet-driven coordination.

Product Overview

Origin Raid Planner covers the full lifecycle of raid preparation:

  • Discord OAuth login restricted to guild officers
  • guild member synchronization from Discord
  • roster management with mains, rerolls, classes, specs, and roles
  • weekly raid templates and ad hoc manual raids
  • visual drag-and-drop composition building
  • weekly auto-compose rules and officer validation tools
  • Discord signup messages with interactive status updates
  • reminders for missing signups
  • publication of final compositions back to Discord
  • confirmation tracking, bench management, and fairness monitoring

Why This Project Is Strong Portfolio Material

This is not a generic CRUD dashboard. It is a production-oriented product with non-trivial business logic and external system integration.

It demonstrates:

  • end-to-end product design for a real user group
  • Spring Boot API design around domain-heavy workflows
  • Angular UI built for operational decision-making
  • Discord bot and OAuth integration
  • scheduling, reminders, and automated weekly publishing
  • Docker-based deployment and maintenance scripts

Architecture

The project is split into two applications:

  • Backend: Spring Boot API at the repository root
  • Frontend: Angular application in raid-planner-ui/

Backend responsibilities

  • authentication and access control
  • roster and raid domain logic
  • weekly template generation
  • reminder and publication workflows
  • Discord API integration via JDA
  • persistence, migrations, and operational endpoints

Frontend responsibilities

  • officer dashboard and weekly planning views
  • composition building and validation workflows
  • template administration
  • publication and reminder tooling
  • compact comparison views for cross-raid decision making

Technical Stack

Backend

  • Java 15
  • Spring Boot 2.4
  • Spring Web
  • Spring Data JPA
  • MySQL 8
  • Flyway
  • JDA (Discord API)

Frontend

  • Angular 19
  • TypeScript
  • SCSS
  • Angular CDK
  • SortableJS

Infrastructure

  • Docker
  • Docker Compose
  • Nginx
  • Uptime Kuma
  • VPS deployment scripts
  • MySQL backup and restore scripts

Key Workflows

Officer workflow

  • navigate raids on a Wednesday -> Tuesday planning cycle
  • create weekly or one-off raids
  • build 2-group compositions visually
  • lock, validate, and publish raid compositions
  • compare a raid against a reference raid already prepared
  • monitor confirmations, absences, bench, and signup gaps

Discord workflow

  • publish signup messages to the correct guild channel
  • let players update their status directly from Discord
  • send reminder messages when signups are missing
  • publish final compositions with officer-ready formatting

Repository Structure

Local Setup

Prerequisites

  • Java 15+
  • Maven
  • Node.js + npm
  • MySQL 8
  • a configured Discord application and bot

Backend

Useful environment variables:

  • DISCORD_BOT_TOKEN
  • DISCORD_GUILD_ID
  • DISCORD_OAUTH_CLIENT_ID
  • DISCORD_OAUTH_CLIENT_SECRET
  • DISCORD_OAUTH_REDIRECT_URI
  • DISCORD_OAUTH_FRONTEND_SUCCESS_URL
  • DISCORD_OAUTH_FRONTEND_DENIED_URL

Run locally:

$env:DISCORD_BOT_TOKEN="..."
$env:DISCORD_OAUTH_CLIENT_ID="..."
$env:DISCORD_OAUTH_CLIENT_SECRET="..."
mvn spring-boot:run

Frontend

cd raid-planner-ui
npm install
npm start

Default local URLs:

Production Deployment

  1. Copy .env.prod.example to .env.prod
  2. Fill in Discord and MySQL secrets
  3. Start the production stack:
docker compose --env-file .env.prod -f docker-compose.prod.yml up -d --build

Useful operational scripts:

Monitoring

The production stack includes a lightweight monitoring service based on Uptime Kuma.

Suggested monitors:

  • frontend public URL: https://planner.origin-raid.fr/
  • backend health endpoint: https://planner.origin-raid.fr/actuator/health
  • optional internal monitor via local bind: http://127.0.0.1:3001

By default, the monitoring UI is bound locally on the VPS:

  • MONITORING_BIND=127.0.0.1:3001

This keeps the dashboard private by default. It can be reached through an SSH tunnel or published later behind your reverse proxy if needed.

Git Workflow Note

The project is organized with:

  • a root repository for backend, infrastructure, deployment scripts, and documentation
  • a dedicated frontend repository mounted as a Git submodule in raid-planner-ui/

When a change affects the frontend:

  1. commit and push inside raid-planner-ui
  2. commit and push the root repository to update the submodule pointer

Current Direction

The application is already usable in production for officer workflows. The most natural next steps are:

  • stronger automated test coverage
  • more observability and operational monitoring
  • continued UX refinement for officer decision-making
  • additional hardening around production automation

About

Full-stack raid planning tool for WoW guild officers — Spring Boot, Angular, Discord bot integration

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors