Climb smarter. โ Your Valorant performance coach.
Rankflow is a player improvement and coaching analytics platform for Valorant. Unlike traditional stat trackers, Rankflow transforms match history into actionable coaching signals, helping players understand their weaknesses and climb ranks.
๐ Live: https://rankflow-xi.vercel.app
- Vision & Philosophy
- Tech Stack
- Project Structure
- Features
- Design System
- Code Conventions
- Roadmap
- Setup
Rankflow is designed as a pre-game decision tool + post-game feedback loop for competitive Valorant players.
Core philosophy:
- Simple > complex โ a player should understand their stats at a glance
- Actionable > data-heavy โ every insight must lead to a decision
- Fast > feature-overloaded โ the site respects the player's time
Key differentiator vs tracker.gg: Rankflow translates raw stats into human advice. A Bronze player with 50% headshot rate doesn't know this is irrelevant for climbing โ Rankflow tells them what actually matters at their rank.
Target audience: Competitive Valorant players (Iron to Radiant) who want structured improvement.
- Framework: Next.js 16 (App Router, Server Components)
- Language: JavaScript
- Styling: Tailwind CSS
- Font: Space Grotesk (via next/font/google)
- Deployment: Vercel (auto-deploy on git push)
- APIs:
- Henrik API (primary, free tier) โ https://api.henrikdev.xyz
- Riot API (pending official access) โ currently limited developer key
Environment variables (.env.local + Vercel):
HENRIK_API_KEYโ HDEV-... key for Henrik APIRIOT_API_KEYโ RGAPI-... key (not actively used yet)
app/ โโโ layout.js # Root layout (font, header, background) โโโ page.js # Home page with search bar โโโ globals.css # Global styles + utility classes โโโ player/[name]/[tag]/ โโโ page.js # Dashboard (profile, rank, curve, recap) โโโ coach/page.js # Coach (session plan, tips, alerts) โโโ maps/page.js # Maps list (3 columns by WR) โโโ map/[mapName]/page.js # Map detail (stats, agents, matches) โโโ agents/page.js # Agents list (3 columns by WR) โโโ agent/[agentName]/page.js # Agent detail (KDA, maps, matches) โโโ advanced/ โ โโโ page.js # Server component (data fetching) โ โโโ AdvancedView.js # Client component (interactive UI) โโโ history/ โโโ page.js # Server component (data fetching) โโโ HistoryView.js # Client component (filters)
- Large RANKFLOW branding with red Valorant glow effect
- "Climb smarter." signature slogan
- Riot ID search bar (Name#TAG format)
- 3 feature teasers (Dashboard, Coach, Progression)
- Player profile (card, name, level)
- Current rank with RR and last game change
- Rank progression curve with dynamic rank-based Y-axis
- Session recap (wins/losses/winrate) with link to Coach
- Session Plan โ best map to play, worst map to avoid, suggested agent
- Rank-based tips โ 4 brackets (Iron/Bronze, Silver/Gold, Plat/Diamond, Ascendant+)
- Smart alerts:
- Loss streak detection (3+ consecutive losses) โ red Valorant alert
- Win streak detection (3+ consecutive wins) โ emerald alert
- Agent warning (3+ games, WR โค 35%)
- Map warning (3+ games, WR โค 35%)
- Best/Worst map cards
- Best/Worst agent cards
- 3-column layout by performance:
- ร privilรฉgier (WR > 55%) โ emerald
- ร consolider (WR 45-55%) โ indigo
- ร รฉviter (WR < 45%) โ rose
- Click any map โ detail page with stats, agents played, recent matches
- Same 3-column structure as Maps
- Click any agent โ detail page with KDA averages, maps played, recent matches
Interactive UI with overview grid + expandable detail cards:
- โ๏ธ First Duel Rate โ % of first duels won
- ๐ค Trade Rate โ % of deaths traded within 5s
- โญ KAST โ Kill/Assist/Survive/Trade percentage
- ๐ซ Pistol Rounds โ winrate on rounds 1 and 13
- ๐ฅ Damage per Round โ average DPR with pro benchmark
- ๐ฐ Eco vs Full Buy โ kills per round by economy state
Each metric includes a coach insight in plain language.
- Total session RR net (+/- X RR)
- Filters: All / Wins / Losses
- Each match: map, agent icon, score, KDA, RR change
Primary palette:
- Background:
slate-950(darkest) - Cards:
slate-900/slate-800 - Borders:
slate-800/slate-700 - Text:
white/slate-300/slate-400
Accent: Rouge Valorant #FF4654
Used for:
- Logo hover
- Search button
- Critical alerts (loss streak)
- RANKFLOW glow on home page
- Identity signature point (after "Climb smarter.")
Status colors:
- Good:
emerald-400/emerald-500 - Neutral:
indigo-400/indigo-500 - Warning:
amber-400/orange-400 - Bad:
rose-400/rose-500
Font: Space Grotesk (Google Fonts via next/font)
- Variable CSS:
--font-space-grotesk - Used everywhere via
font-sans(Tailwind default overridden in config)
Conventions:
tracking-tighterfor big titles (hero)tracking-tightfor numbers and statstracking-widerfor uppercase labels
.card-hover /* Subtle lift + border highlight */
.card-interactive /* Bigger lift + indigo border + shadow */
.fade-in /* Progressive appearance animation */- Back arrows (
โ) slide left on hover - Forward arrows (
โ) slide right on hover - Cards lift slightly on hover
- Active navigation tab has gradient + border
- Home page: red pulsing dot on "Valorant Performance Tracker" badge
- Server Components (default) for pages that only fetch and display data
- Client Components (
"use client") only when interactivity is needed (useState, onClick) - Pattern for interactive pages: Server
page.jsfetches data โ passes to ClientXxxView.jscomponent
Example: advanced/page.js (server) + advanced/AdvancedView.js (client)
All data comes from Henrik API. Routes used:
v1/account/{name}/{tag}โ player profilev2/mmr/eu/{name}/{tag}โ current rankv1/mmr-history/eu/{name}/{tag}โ rank history for curves and RR changesv4/matches/eu/pc/{name}/{tag}?mode=competitive&size=20โ detailed match data
Known limits:
- Henrik free tier returns 10 matches max even if
size=20is requested - Official Riot API access would unlock real-time data, full match history, and more granular signals
All player pages share a sub-navigation bar: Dashboard | Coach | Maps | Agents | Stats avancรฉes | Historique The active tab uses:
- Home page with search
- Dashboard with profile, rank, progression curve
- Coach with session plan, tips, alerts
- Maps (list + 3 columns + detail)
- Agents (list + 3 columns + detail)
- Advanced stats (6 metrics with interactive accordions)
- History with RR per match and filters
- Design polish (typography, palette, micro-interactions)
- Deployment on Vercel with env vars
- Apply "3 columns" logic to Coach page (best/worst map and agent)
- Add "New" badge on Advanced Stats tab
- Week-over-week progression comparison (requires DB storage)
- More advanced metrics:
- Clutch rate (1vX situations)
- Positional heatmaps (x/y death zones)
- Synergy analysis (teammates with highest WR together)
- Time-of-day performance patterns
- More coach detections:
- Tilt detection via KDA drop
- Agent pool too wide warning
- Time-based fatigue warning
- Official Riot API access (pending)
- User accounts with historical data storage
- Comparison between players
- Mobile-first optimizations
- More languages (currently FR)
- Node.js 18+
- npm or yarn
- A Henrik API key (free at https://docs.henrikdev.xyz)
# Clone the repo
git clone https://github.com/Rankflowapp/Rankflow.git
cd Rankflow
# Install dependencies
npm install
# Create .env.local
echo "HENRIK_API_KEY=HDEV-your-key-here" > .env.local
# Run dev server
npm run devThe project auto-deploys to Vercel on every push to main. Environment variables must be configured in Vercel Settings.
Project owner: Aurel (Sparni#EUW)
Rankflow complies with Riot's Developer Policies. It does not offer boosting, account marketplaces, gambling features, or unofficial game modifications.
Built with Next.js, Tailwind, and a lot of ranked games.