Skip to content

Latest commit

ย 

History

78 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

ArcadeTracker Banner

Next.js React TypeScript Tailwind CSS Supabase Vercel License i18n


๐ŸŽฎ ArcadeTracker

A full-stack web dashboard for Google Cloud Arcade Festival (GCAF) players featuring real-time point tracking, a tier system, and a comprehensive catalog of skill badges

Paste your public Skills Boost profile URL and immediately see:

  • Arcade Points game badges (+1) and skill badges (+0.5) for the active period
  • Tier Eligibility Trooper (50+) โ†’ Ranger (75+) โ†’ Champion (95+) โ†’ Legend (120+)
  • Facilitator Milestones M1 (+5 pts), M2 (+15 pts), Ultimate (+25 pts) progress bars
  • Active July 2026 Tracks the six monthly game tracks with completion status
  • FastTrack Catalog 50+ skill badges searchable by name, difficulty, and category
  • Live Leaderboard real-time with a podium and full rankings

โœจ Key Features

๐Ÿง‘โ€๐Ÿ’ป Player Dashboard

  • Automatic Point Summary Automatic calculation: Game Badge (ร—1 pt) + Skill Badge (ร—0.5 pt) + Facilitator Milestone Bonus
  • Tier System Legend (120+), Champion (95+), Ranger (75+), Trooper (50+) with a progress bar to the next tier
  • Milestone Tracker M1 / M2 / M3 / Ultimate Milestone with extra bonus points
  • Active Game Tracks 6 Arcade tracks complete with access codes
  • Fast Track Catalog 50+ GCAF 2026 skill badges that can be filtered by category, difficulty level, and completion status
  • Badge History โ€œMy Badgesโ€ tab displaying all earned badges, with current/archive filters and an activity heatmap
  • Activity Chart Visual breakdown of badge earnings over time
  • Activity Heatmap 26 week GitHub-style calendar heatmap of badge earning days
  • Streak Counter Current and all-time longest consecutive activity streak
  • Leaderboard Track your rank and compete with other players based on total points, badges earned, and milestone progress.

๐Ÿ‘ฉโ€๐Ÿซ Facilitator Panel

  • Member Management View and manage all participants associated with a facilitator code
  • CSV Import Bulk-upload participant data via CSV with validation, per-row status feedback, and rollback support
  • Email Sending Send targeted emails to selected participants directly from the dashboard
  • Batch History Full log of every CSV import with rollback option for any batch
  • Real-Time Sync Member list updates instantly via Supabase Realtime subscriptions

๐Ÿ› ๏ธ Admin Panel

  • Global Statistics Live counts: total participants, total badges, game badges, skill badges, active facilitators
  • Participant Overview Lists of recently synced and unsynced participants with direct profile links
  • Facilitator Code Management Add and delete facilitator codes with name labels
  • Master Sync Trigger a bulk synchronization of all participant data to the Arcade sheet
  • Maintenance Mode Toggle site-wide maintenance mode on/off with a single click
  • Audit Log Paginated, timestamped log of all admin actions with actor, target, and metadata
  • Feedback Management View and manage player feedback submissions with ratings and categories

๐ŸŽฏ Point System & Levels

Point Calculation

Total Points = Game Badges ร— 1 pt
           + Skill Badges ร— 0.5 pt
           + Facilitator Bonus (from achievement milestones)

Milestones & Bonuses

Milestone Game Badges Skill Badges Point Bonus
Milestone 1 6 14 +7 points
Milestone 2 8 28 +18 points
Achievement Milestone 3 10 42 +29 points
Highest Achievement Milestone 12 56 +40 points

Levels

Tier Min. Points Level
Legend 120+ 1
Champion 95+ 2
Ranger 75+ 3
Trooper 50+ 4

๐Ÿš€ How to Run

Prerequisites

  • Node.js 18+
  • pnpm / npm / yarn

Installation Steps

# 1. Clone the repository
git clone https://github.com/RakkaEvandra06/ArcadeTracker.git

# 2. Navigate to the project folder
cd ArcadeTracker

# 3. Install dependencies
npm install

# 4. Run the development server
npm run dev

๐Ÿ“‚ Project Structure

ArcadeTracker/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ app/                          # Next.js App Router
โ”‚   โ”‚   โ”œโ”€โ”€ admin/                    # Admin panel page
โ”‚   โ”‚   โ”œโ”€โ”€ admin-login/              # Admin login page
โ”‚   โ”‚   โ”œโ”€โ”€ facilitator/              # Facilitator dashboard page
โ”‚   โ”‚   โ”œโ”€โ”€ facilitator-login/        # Facilitator login page
โ”‚   โ”‚   โ”œโ”€โ”€ player-login/             # Player login (Skills Boost URL input)
โ”‚   โ”‚   โ”œโ”€โ”€ dashboard/                # Player dashboard page
โ”‚   โ”‚   โ”œโ”€โ”€ api/
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ auth/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ login/            # POST โ€” authenticate & create session cookie
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ logout/           # POST โ€” destroy session (rate-limited)
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ me/               # GET  โ€” validate active session
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ participants/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ route.ts          # GET  โ€” list all participants (leaderboard)
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ [id]/route.ts     # GET/PUT/DELETE โ€” single participant CRUD
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ scrape/route.ts       # POST โ€” scrape Skills Boost profile via Cheerio
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ skills/route.ts       # GET  โ€” list all GCAF skill badges
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ feedback/route.ts     # POST โ€” submit player feedback
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ facilitator/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ batches/          # GET/POST โ€” CSV import batch management
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ email/            # POST โ€” send emails to selected members
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ import/           # POST โ€” bulk CSV participant import
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ members/          # GET/POST/DELETE โ€” member management
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ admin/
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ stats/            # GET  โ€” global statistics
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ facilitators/     # GET/POST/DELETE โ€” facilitator code management
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ audit-logs/       # GET  โ€” paginated audit trail
โ”‚   โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ master-sync/      # POST โ€” bulk sync all participants
โ”‚   โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ maintenance/      # POST โ€” toggle maintenance mode
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ cron/
โ”‚   โ”‚   โ”‚       โ”œโ”€โ”€ sync-participants/   # Scheduled: sync badge data (16:00 UTC)
โ”‚   โ”‚   โ”‚       โ””โ”€โ”€ refresh-leaderboard/ # Scheduled: rebuild rankings (16:30 UTC)
โ”‚   โ”‚   โ”œโ”€โ”€ globals.css                  # Global styles & Tailwind design tokens
โ”‚   โ”‚   โ”œโ”€โ”€ layout.tsx                   # Root layout with metadata and providers
โ”‚   โ”‚   โ””โ”€โ”€ page.tsx                     # Root redirect (โ†’ /player-login)
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ components/
โ”‚   โ”‚   โ”œโ”€โ”€ Dashboard.tsx             # Player dashboard (Overview / Catalog / Badges tabs)
โ”‚   โ”‚   โ”œโ”€โ”€ DashboardSkeleton.tsx     # Loading skeleton for player dashboard
โ”‚   โ”‚   โ”œโ”€โ”€ FacilitatorPanel.tsx      # Facilitator dashboard (members, import, email, history)
โ”‚   โ”‚   โ”œโ”€โ”€ Leaderboard.tsx           # Leaderboard panel for Players
โ”‚   โ”‚   โ”œโ”€โ”€ AdminPanel.tsx            # Full admin control panel
โ”‚   โ”‚   โ”œโ”€โ”€ ProfileHeader.tsx         # Avatar, name, tier badge, points, sync button
โ”‚   โ”‚   โ”œโ”€โ”€ ActivityChart.tsx         # Badge activity bar/line chart
โ”‚   โ”‚   โ”œโ”€โ”€ ActivityHeatmap.tsx       # 26-week calendar heatmap
โ”‚   โ”‚   โ”œโ”€โ”€ AccessCodeModal.tsx       # Modal for game track access codes
โ”‚   โ”‚   โ”œโ”€โ”€ Header.tsx                # Navigation bar with theme + language toggle
โ”‚   โ”‚   โ”œโ”€โ”€ PlayerShell.tsx           # Layout wrapper for player-facing pages
โ”‚   โ”‚   โ”œโ”€โ”€ Icons.tsx                 # SVG 
โ”‚   โ”‚   โ”œโ”€โ”€ PlayerDashboardClient.tsx # Client-side state for player dashboard
โ”‚   โ”‚   โ”œโ”€โ”€ Providers.tsx             # Global context providers (theme, language)
โ”‚   โ”‚   โ”œโ”€โ”€ SignOutDialog.tsx         # Confirmation dialog for sign-out
โ”‚   โ”‚   โ”œโ”€โ”€ ThemeLangToggle.tsx       # Combined dark/light + language switcher
โ”‚   โ”‚   โ”œโ”€โ”€ ThemeToggle.tsx           # Dark/light mode toggle button
โ”‚   โ”‚   โ””โ”€โ”€ Toast.tsx                 # Toast notification system
โ”‚   โ”‚
โ”‚   โ”œโ”€โ”€ lib/
โ”‚   โ”‚   โ”œโ”€โ”€ db.ts                     # Supabase client + all database query functions
โ”‚   โ”‚   โ”œโ”€โ”€ i18n.ts                   # Full i18n string map (EN / ID / JP)
โ”‚   โ”‚   โ”œโ”€โ”€ LanguageContext.tsx       # React context for language switching
โ”‚   โ”‚   โ”œโ”€โ”€ localAuth.ts              # LocalStorage-based facilitator auth persistence
โ”‚   โ”‚   โ”œโ”€โ”€ security.ts               # Rate limiting, CSRF, SSRF, input sanitization
โ”‚   โ”‚   โ”œโ”€โ”€ session.ts                # HMAC session creation and verification
โ”‚   โ”‚   โ”œโ”€โ”€ session-constants.ts      # Cookie name and max-age constants (Edge-safe)
โ”‚   โ”‚   โ”œโ”€โ”€ streak.ts                 # Consecutive-day streak computation + localStorage cache
โ”‚   โ”‚   โ”œโ”€โ”€ supabase-client.ts        # Browser-side Supabase client (anon key)
โ”‚   โ”‚   โ”œโ”€โ”€ ThemeContext.tsx          # React context for dark/light theme
โ”‚   โ”‚   โ””โ”€โ”€ useTheme.ts               # Dark/light theme hook with localStorage persistence
โ”‚   โ”‚
โ”‚   โ””โ”€โ”€ middleware.ts                 # Edge Middleware โ€” role-based route protection
โ”‚
โ”œโ”€โ”€ public/
โ”‚   โ”œโ”€โ”€ banner.svg                    # Repository banner
โ”‚   โ”œโ”€โ”€ icon.png                      # App icon / favicon
โ”‚   โ””โ”€โ”€ OpenGraph.png                 # Social share preview image
โ”‚
โ”œโ”€โ”€ .env.local                        # Local environment variables (never commit)
โ”œโ”€โ”€ eslint.config.mjs                 # ESLint configuration
โ”œโ”€โ”€ next.config.ts                    # Next.js config: security headers, image hosts
โ”œโ”€โ”€ postcss.config.mjs                # PostCSS config for Tailwind
โ”œโ”€โ”€ tsconfig.json                     # TypeScript configuration
โ”œโ”€โ”€ vercel.json                       # Vercel deployment config + cron job schedules
โ””โ”€โ”€ package.json                      # Dependencies and npm scripts

๐Ÿค Contributing

Contributions are welcome and appreciated! Here's how to get involved:

Reporting Bugs

  1. Search the Issues page to check if it's already reported
  2. Open a new issue with the Bug Report template
  3. Include: your OS, Node.js version, steps to reproduce, expected vs actual behavior, and any error messages

Suggesting Features

  1. Open a new issue with the Feature Request template
  2. Describe the problem your idea solves and your proposed solution
  3. Discuss the approach in the issue before opening a pull request

Submitting a Pull Request

# 1. Fork the repository on GitHub
 
# 2. Clone your fork
git clone https://github.com/RakkaEvandra06/ArcadeTracker.git
cd ArcadeTracker
 
# 3. Create a feature branch
git checkout -b feature/your-feature-name
 
# 4. Install dependencies
npm install
 
# 5. Make your changes โ€” keep commits focused and descriptive
 
# 6. Lint your code before committing
npm run lint
 
# 7. Push your branch
git push origin feature/your-feature-name
 
# 8. Open a Pull Request on GitHub against the main branch

Contribution Guidelines

  • Follow the existing TypeScript and Tailwind code style
  • Keep pull requests focused one feature or bug fix per PR
  • Add or update comments for any non-obvious logic
  • Do not commit .env.local or any secrets
  • Test your changes locally with npm run dev and npm run build before submitting

๐Ÿ“ฌ Contact

Have a question, found a bug, or want to collaborate?

Channel Link
GitHub @RakkaEvandra06
Issues ArcadeTracker Issues

Feel free to open a GitHub issue for any bug reports, feature requests, or general questions about the project.

๐Ÿ“„ License

This project is licensed under the MIT License. See LICENSE.txt for the full license text.

Made with โค๏ธ by RakkaEvandra06, Google Cloud Arcade 2026

About

Website dashboard for Google Cloud Arcade 2026, track arcade points, tier eligibility (Legend/Champion/Ranger/Trooper), player milestones & live leaderboard.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages