Skip to content

Repository files navigation

Infinity Ranking

An open-source Roblox group ranking dashboard built with modern web technologies.

Manage promotions, demotions, rank requests, audits, and members using the Roblox Open Cloud API.

Features

  • Dashboard - Real-time stats, charts, activity feed, and system status
  • Groups - Add and manage multiple Roblox groups with encrypted API keys
  • Members - Search, filter, and manage group members with pagination
  • Promotions - Single and bulk promotions with confirmation and audit trails
  • Demotions - Same powerful features for demotions
  • Rank Requests - Approval queue with comments and audit logging
  • Audit Logs - Complete searchable history of all actions
  • Settings - Theme customization, accent colors, notifications, security

Tech Stack

  • Frontend: Next.js 16, React 19, TypeScript, TailwindCSS v4, shadcn/ui
  • Backend: Next.js Route Handlers, Prisma ORM, Zod
  • Auth: Better Auth (Email/Password, GitHub OAuth, Discord OAuth)
  • State: Zustand, TanStack Query
  • Animations: Framer Motion
  • Charts: Recharts
  • Database: PostgreSQL (SQLite for development)

Getting Started

Prerequisites

  • Node.js 18+
  • npm or yarn
  • A Roblox Open Cloud API Key

Installation

git clone https://github.com/vortexsinclair/infinity-ranking.git
cd infinity-ranking
npm install

Environment Variables

Copy .env.example to .env.local:

cp .env.example .env.local

Fill in the required variables:

DATABASE_URL="file:./dev.db"
AUTH_SECRET="your-secret-here"
GITHUB_CLIENT_ID=""
GITHUB_CLIENT_SECRET=""
DISCORD_CLIENT_ID=""
DISCORD_CLIENT_SECRET=""
ENCRYPTION_KEY="your-64-char-hex-key"
NEXT_PUBLIC_APP_NAME="Infinity Ranking"
NEXT_PUBLIC_APP_URL="http://localhost:3000"

Generating an Encryption Key

node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

Database Setup

npx prisma db push
npx prisma generate

Development

npm run dev

Visit http://localhost:3000

Build

npm run build
npm start

Docker

Using Docker Compose

docker-compose up -d

Building the Docker Image

docker build -t infinity-ranking .
docker run -p 3000:3000 infinity-ranking

Roblox Open Cloud Setup

  1. Go to the Roblox Open Cloud dashboard
  2. Create a new API Key
  3. Under "Cloud API Access", enable the groups scope
  4. Set the group ID for the key
  5. Copy the API key and add it when creating a group in the dashboard

Security Note: API keys are encrypted with AES-256-GCM before being stored in the database. They are never exposed to the frontend.

Roles & Permissions

Role Promote Demote Manage Users Configure Groups View Logs Manage API Keys
Owner Yes Yes Yes Yes Yes Yes
Admin Yes Yes Yes Yes Yes Yes
Moderator Yes Yes Yes No Yes No
Staff No No No No Yes No

The first registered user automatically becomes the Owner.

Project Structure

src/
├── app/              # Next.js pages and route handlers
│   ├── (auth)/       # Login and register pages
│   ├── (dashboard)/  # Dashboard pages
│   └── api/          # API route handlers
├── components/       # React components
│   ├── ui/           # shadcn/ui primitives
│   ├── layout/       # Layout components
│   ├── dashboard/    # Dashboard-specific components
│   ├── groups/       # Group management
│   ├── members/      # Member management
│   ├── promotions/   # Promotion/demotion forms
│   ├── rank-requests/ # Rank request queue
│   ├── audit/        # Audit log table
│   ├── settings/     # Settings page
│   └── shared/       # Shared/reusable components
├── hooks/            # Custom React hooks
├── lib/              # Utilities, validation, encryption
├── server/           # Server-side auth
├── services/         # Business logic and API services
├── store/            # Zustand stores
└── types/            # TypeScript type definitions

Security

  • All API keys encrypted with AES-256-GCM
  • CSRF protection via Better Auth
  • Security headers (X-Frame-Options, CSP, etc.)
  • Input validation with Zod on all API routes
  • Rate limiting on API endpoints
  • No secrets exposed to the frontend
  • All Roblox API calls go through the backend

Contributing

See CONTRIBUTING.md for guidelines.

License

MIT License. See LICENSE for details.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages