A personal Overwatch 2 match tracking and analytics dashboard. Log your matches and get deep insights into your performance across heroes, maps, roles, group sizes, and time patterns.
- Match logging — Record matches with map, game mode, result, group size, heroes played, and role time splits
- Overview — Win/loss breakdown by map, game mode distribution, and per-mode winrates
- Hero analytics — Most-played heroes, per-hero winrates, one-trick detection, hero pool diversity, and hero swap patterns
- Map analytics — Winrate rankings, map tier list, volatility scoring, hero×map synergy matrix, learning curves, familiarity scores, and repeat-map patterns
- Time analytics — Rolling winrate trend, activity heatmap, win/loss streaks, recent form, session analysis, and day-of-week performance
- Group analytics — Winrate and match breakdown by group size (solo, duo, trio, full stack)
- Role analytics — Role distribution, per-role winrates, and role flexibility scoring
- Framework — Next.js 16 (App Router, React Server Components)
- Database — PostgreSQL via Prisma
- Auth — Better Auth with GitHub, Google, Discord OAuth, and magic link
- UI — Tailwind CSS v4, Radix UI, shadcn/ui
- Charts — Recharts
- Animations — Motion
- Node.js 20+
- pnpm
- A PostgreSQL database
- Clone the repository and install dependencies:
git clone https://github.com/lucasdoell/winrate-tracker.git
cd winrate-tracker
pnpm install- Copy the environment file and fill in your values:
cp .env.example .envRequired environment variables:
DATABASE_URL=
BETTER_AUTH_SECRET=
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
DISCORD_CLIENT_ID=
DISCORD_CLIENT_SECRET=- Push the database schema:
pnpm db:push- Start the development server:
pnpm devOpen http://localhost:3000 in your browser.
| Command | Description |
|---|---|
pnpm dev |
Start the development server |
pnpm build |
Build for production |
pnpm start |
Start the production server |
pnpm lint |
Run ESLint |
pnpm typecheck |
Run TypeScript type checking |
pnpm format |
Format with Prettier |
pnpm db:push |
Push schema changes to the database |
pnpm db:migrate |
Create and apply a migration |
pnpm db:deploy |
Deploy pending migrations (production) |
pnpm db:generate |
Regenerate the Prisma client |