# davehess/quarmbosstracker architecture

> Architecture diagram of the GitHub repository davehess/quarmbosstracker, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/davehess/quarmbosstracker
- Repository: https://github.com/davehess/quarmbosstracker
- Video tour (about a minute): https://gitdiagram.com/davehess/quarmbosstracker/video

## Overview

Wolf Pack EQ combines a Discord raid-management bot, a member-facing guild website, a per-PC combat-log agent, and the Mimic desktop client. The main member workflow is to sign in, run Mimic or the log agent while playing, send filtered raid data to the bot, and view guild tools and raid results on the site. The graph preserves documented bot domains and Mimic features, but the source excerpts are sparse; uncertain internal wiring is omitted.

Main entry points: [`commands`](https://github.com/davehess/quarmbosstracker/tree/main/commands) (Slash commands), [`packages/wolfpack-logsync/index.js`](https://github.com/davehess/quarmbosstracker/blob/main/packages/wolfpack-logsync/index.js) (Log sync agent), [`apps/mimic/main.js`](https://github.com/davehess/quarmbosstracker/blob/main/apps/mimic/main.js) (Mimic desktop), [`commands/ingestrules.js`](https://github.com/davehess/quarmbosstracker/blob/main/commands/ingestrules.js) (Rule ingestion)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_bot["Discord bot"]
  node_botapp["Bot runtime<br/>[index.js]"]
  node_commands["Slash commands"]
  node_timers["Raid timers<br/>[timer.js]"]
  node_parsing["Parse aggregation<br/>[parseEqLog.js]"]
  node_loot["DKP and loot<br/>[loot.js]"]
  node_rules["Rule ingestion<br/>[ingestrules.js]"]
end

subgraph group_site["Guild website"]
  node_siteapp["Guild tools"]
  node_auth["Member sign-in<br/>[route.ts]"]
  node_search["Global search<br/>[route.ts]"]
  node_release["Mimic downloads<br/>[route.ts]"]
end

subgraph group_clients["Member clients"]
  node_agent["Log sync agent<br/>[index.js]"]
  node_agentwatch["Log supervision<br/>[supervisor.js]"]
  node_mimic["Mimic desktop<br/>[main.js]"]
  node_mimicui["Overlays and UI<br/>[uiPacks.js]"]
  node_zeal["Zeal integration<br/>[zealPipe.js]"]
end

subgraph group_data["Shared data"]
  node_db[("Supabase data<br/>[supabase.js]")]
  node_webdb["Website data access<br/>[supabase-server.ts]"]
end

node_member(("Raid member"))
node_officer(("Officer"))
node_discord(("Discord"))
node_eq["EQ logs"]
node_github(("GitHub releases"))

node_member -->|"uses commands"| node_discord
node_officer -->|"manages guild"| node_discord
node_discord -->|"delivers interactions"| node_botapp
node_botapp -->|"dispatches commands"| node_commands
node_commands -->|"manages timers"| node_timers
node_commands -->|"handles parses"| node_parsing
node_commands -->|"handles loot"| node_loot
node_officer -->|"starts ingest"| node_rules
node_rules -->|"reads rule channels"| node_discord
node_rules -->|"upserts rules"| node_db
node_eq -->|"provides log files"| node_agentwatch
node_agentwatch -->|"watches logs"| node_agent
node_agent -->|"uploads encounters"| node_botapp
node_agent -->|"forwards guild chat"| node_discord
node_member -->|"runs client"| node_mimic
node_mimic -->|"launches locally"| node_agent
node_mimic -->|"shows overlays"| node_mimicui
node_zeal -->|"supplies game state"| node_mimic
node_member -->|"views guild tools"| node_siteapp
node_siteapp -->|"requests sign-in"| node_auth
node_auth -->|"checks membership"| node_discord
node_auth -->|"stores membership"| node_webdb
node_siteapp -->|"searches records"| node_search
node_search -->|"queries catalog"| node_webdb
node_member -->|"requests installer"| node_release
node_release -->|"finds release assets"| node_github
node_webdb -->|"reads shared data"| node_db

click node_botapp "https://github.com/davehess/quarmbosstracker/blob/main/index.js"
click node_commands "https://github.com/davehess/quarmbosstracker/tree/main/commands"
click node_timers "https://github.com/davehess/quarmbosstracker/blob/main/utils/timer.js"
click node_parsing "https://github.com/davehess/quarmbosstracker/blob/main/utils/parseEqLog.js"
click node_loot "https://github.com/davehess/quarmbosstracker/blob/main/utils/loot.js"
click node_rules "https://github.com/davehess/quarmbosstracker/blob/main/commands/ingestrules.js"
click node_agent "https://github.com/davehess/quarmbosstracker/blob/main/packages/wolfpack-logsync/index.js"
click node_agentwatch "https://github.com/davehess/quarmbosstracker/blob/main/packages/wolfpack-logsync/supervisor.js"
click node_mimic "https://github.com/davehess/quarmbosstracker/blob/main/apps/mimic/main.js"
click node_mimicui "https://github.com/davehess/quarmbosstracker/blob/main/apps/mimic/uiPacks.js"
click node_zeal "https://github.com/davehess/quarmbosstracker/blob/main/apps/mimic/zealPipe.js"
click node_siteapp "https://github.com/davehess/quarmbosstracker/tree/main/web/app"
click node_auth "https://github.com/davehess/quarmbosstracker/blob/main/web/app/auth/callback/route.ts"
click node_search "https://github.com/davehess/quarmbosstracker/blob/main/web/app/api/search/route.ts"
click node_release "https://github.com/davehess/quarmbosstracker/blob/main/web/app/mimic/route.ts"
click node_db "https://github.com/davehess/quarmbosstracker/blob/main/utils/supabase.js"
click node_webdb "https://github.com/davehess/quarmbosstracker/blob/main/web/lib/supabase-server.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_botapp,node_commands,node_timers,node_parsing,node_loot,node_rules toneBlue
class node_siteapp,node_auth,node_search,node_release toneAmber
class node_agent,node_agentwatch,node_mimic,node_mimicui,node_zeal toneMint
class node_db,node_webdb toneRose
class node_member,node_officer,node_discord,node_eq,node_github toneIndigo
```

## Components

### Discord bot

- [Bot runtime](https://github.com/davehess/quarmbosstracker/blob/main/index.js): `index.js`
- [Slash commands](https://github.com/davehess/quarmbosstracker/tree/main/commands): `commands`
- [Raid timers](https://github.com/davehess/quarmbosstracker/blob/main/utils/timer.js): `utils/timer.js`
- [Parse aggregation](https://github.com/davehess/quarmbosstracker/blob/main/utils/parseEqLog.js): `utils/parseEqLog.js`
- [DKP and loot](https://github.com/davehess/quarmbosstracker/blob/main/utils/loot.js): `utils/loot.js`
- [Rule ingestion](https://github.com/davehess/quarmbosstracker/blob/main/commands/ingestrules.js): `commands/ingestrules.js`

### Guild website

- [Guild tools](https://github.com/davehess/quarmbosstracker/tree/main/web/app): `web/app`
- [Member sign-in](https://github.com/davehess/quarmbosstracker/blob/main/web/app/auth/callback/route.ts): `web/app/auth/callback/route.ts`
- [Global search](https://github.com/davehess/quarmbosstracker/blob/main/web/app/api/search/route.ts): `web/app/api/search/route.ts`
- [Mimic downloads](https://github.com/davehess/quarmbosstracker/blob/main/web/app/mimic/route.ts): `web/app/mimic/route.ts`

### Member clients

- [Log sync agent](https://github.com/davehess/quarmbosstracker/blob/main/packages/wolfpack-logsync/index.js): `packages/wolfpack-logsync/index.js`
- [Log supervision](https://github.com/davehess/quarmbosstracker/blob/main/packages/wolfpack-logsync/supervisor.js): `packages/wolfpack-logsync/supervisor.js`
- [Mimic desktop](https://github.com/davehess/quarmbosstracker/blob/main/apps/mimic/main.js): `apps/mimic/main.js`
- [Overlays and UI](https://github.com/davehess/quarmbosstracker/blob/main/apps/mimic/uiPacks.js): `apps/mimic/uiPacks.js`
- [Zeal integration](https://github.com/davehess/quarmbosstracker/blob/main/apps/mimic/zealPipe.js): `apps/mimic/zealPipe.js`

### Shared data

- [Supabase data](https://github.com/davehess/quarmbosstracker/blob/main/utils/supabase.js): `utils/supabase.js`
- [Website data access](https://github.com/davehess/quarmbosstracker/blob/main/web/lib/supabase-server.ts): `web/lib/supabase-server.ts`

### Other components

- **Raid member**
- **Officer**
- **Discord**
- **EQ logs**
- **GitHub releases**

## Connections

- Raid member → Discord: uses commands
- Officer → Discord: manages guild
- Discord → Bot runtime: delivers interactions
- Bot runtime → Slash commands: dispatches commands
- Slash commands → Raid timers: manages timers
- Slash commands → Parse aggregation: handles parses
- Slash commands → DKP and loot: handles loot
- Officer → Rule ingestion: starts ingest
- Rule ingestion → Discord: reads rule channels
- Rule ingestion → Supabase data: upserts rules
- EQ logs → Log supervision: provides log files
- Log supervision → Log sync agent: watches logs
- Log sync agent → Bot runtime: uploads encounters
- Log sync agent → Discord: forwards guild chat
- Raid member → Mimic desktop: runs client
- Mimic desktop → Log sync agent: launches locally
- Mimic desktop → Overlays and UI: shows overlays
- Zeal integration → Mimic desktop: supplies game state
- Raid member → Guild tools: views guild tools
- Guild tools → Member sign-in: requests sign-in
- Member sign-in → Discord: checks membership
- Member sign-in → Website data access: stores membership
- Guild tools → Global search: searches records
- Global search → Website data access: queries catalog
- Raid member → Mimic downloads: requests installer
- Mimic downloads → GitHub releases: finds release assets
- Website data access → Supabase data: reads shared data
