Skip to content

Commit e4af138

Browse files
feat: full-stack Roblox ranking dashboard with PostgreSQL
- Next.js 16, React 19, TypeScript, TailwindCSS v4, shadcn/ui - Prisma with PostgreSQL, Better Auth for session management - Roblox Open Cloud API integration (no cookies/noblox.js) - Dark/Light/AMOLED themes with accent color picker - BigInt support for Roblox IDs (overflow-safe) - AES-256-GCM encryption for API keys - Docker + CI/CD setup - Auth: username + password, synthetic email pattern - Group/member management, promotions, demotions, rank requests - Audit logging, settings, dashboard with live stats
1 parent 20821a6 commit e4af138

112 files changed

Lines changed: 18121 additions & 3329 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.dockerignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
.dockerignore
2+
node_modules
3+
.next
4+
.git
5+
.env*
6+
*.md
7+
LICENSE
8+
docker-compose.yml

.env.example

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Database
2+
DATABASE_URL="file:./dev.db"
3+
4+
# Auth
5+
AUTH_SECRET="generate-a-random-secret-here"
6+
7+
# GitHub OAuth
8+
GITHUB_CLIENT_ID=""
9+
GITHUB_CLIENT_SECRET=""
10+
11+
# Discord OAuth
12+
DISCORD_CLIENT_ID=""
13+
DISCORD_CLIENT_SECRET=""
14+
15+
# Encryption key for API keys (32 bytes hex)
16+
ENCRYPTION_KEY=""
17+
18+
# App
19+
NEXT_PUBLIC_APP_NAME="Infinity Ranking"
20+
NEXT_PUBLIC_APP_URL="http://localhost:3000"

.github/workflows/ci.yml

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches: [main]
6+
pull_request:
7+
branches: [main]
8+
9+
jobs:
10+
lint:
11+
name: Lint
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
- uses: actions/setup-node@v4
16+
with:
17+
node-version: 20
18+
cache: npm
19+
- run: npm ci
20+
- run: npm run lint
21+
22+
typecheck:
23+
name: Type Check
24+
runs-on: ubuntu-latest
25+
steps:
26+
- uses: actions/checkout@v4
27+
- uses: actions/setup-node@v4
28+
with:
29+
node-version: 20
30+
cache: npm
31+
- run: npm ci
32+
- run: npx prisma generate
33+
- run: npx tsc --noEmit
34+
35+
build:
36+
name: Build
37+
runs-on: ubuntu-latest
38+
steps:
39+
- uses: actions/checkout@v4
40+
- uses: actions/setup-node@v4
41+
with:
42+
node-version: 20
43+
cache: npm
44+
- run: npm ci
45+
- run: npx prisma generate
46+
- run: npm run build

.gitignore

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
2-
31
# dependencies
42
/node_modules
53
/.pnp
@@ -30,12 +28,28 @@ yarn-debug.log*
3028
yarn-error.log*
3129
.pnpm-debug.log*
3230

33-
# env files (can opt-in for committing if needed)
31+
# env files
3432
.env*
33+
!.env.example
3534

3635
# vercel
3736
.vercel
3837

3938
# typescript
4039
*.tsbuildinfo
4140
next-env.d.ts
41+
42+
# prisma
43+
prisma/dev.db
44+
prisma/dev.db-journal
45+
dev.db
46+
dev.db-journal
47+
48+
# IDE
49+
.vscode
50+
.idea
51+
*.swp
52+
*.swo
53+
54+
# os
55+
Thumbs.db

.prettierrc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"singleQuote": false,
3+
"semi": true,
4+
"trailingComma": "es5",
5+
"tabWidth": 2,
6+
"printWidth": 100
7+
}

CONTRIBUTING.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Contributing to Infinity Ranking
2+
3+
Thank you for your interest in contributing! Here are some guidelines to help you get started.
4+
5+
## Development Setup
6+
7+
1. Fork the repository
8+
2. Clone your fork
9+
3. Install dependencies: `npm install`
10+
4. Copy `.env.example` to `.env.local` and configure
11+
5. Run `npx prisma db push` to set up the database
12+
6. Start the dev server: `npm run dev`
13+
14+
## Code Standards
15+
16+
- **TypeScript**: All code must be strongly typed. No `any` types.
17+
- **Linting**: Run `npm run lint` before committing
18+
- **Components**: Use shadcn/ui primitives when possible
19+
- **Styling**: Use TailwindCSS utility classes
20+
- **State**: Use Zustand for global state, TanStack Query for server state
21+
- **Validation**: Use Zod for all input validation
22+
- **Testing**: Write tests for new features when applicable
23+
24+
## Pull Request Process
25+
26+
1. Create a feature branch from `main`
27+
2. Make your changes
28+
3. Ensure all checks pass
29+
4. Submit a pull request with a clear description
30+
5. Wait for review
31+
32+
## Commit Messages
33+
34+
Use clear, descriptive commit messages:
35+
36+
- `feat: add bulk promotion support`
37+
- `fix: resolve member pagination issue`
38+
- `docs: update API documentation`
39+
- `refactor: simplify audit log queries`
40+
41+
## Reporting Issues
42+
43+
When reporting issues, please include:
44+
45+
- Steps to reproduce
46+
- Expected behavior
47+
- Actual behavior
48+
- Browser/OS information
49+
- Screenshots if applicable
50+
51+
## Code of Conduct
52+
53+
Be respectful and constructive. We're building something great together.

Dockerfile

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
FROM node:20-alpine AS base
2+
3+
FROM base AS deps
4+
RUN apk add --no-cache libc6-compat
5+
WORKDIR /app
6+
COPY package.json package-lock.json ./
7+
RUN npm ci
8+
9+
FROM base AS builder
10+
WORKDIR /app
11+
COPY --from=deps /app/node_modules ./node_modules
12+
COPY . .
13+
14+
RUN npx prisma generate
15+
RUN npm run build
16+
17+
FROM base AS runner
18+
WORKDIR /app
19+
20+
ENV NODE_ENV=production
21+
22+
RUN addgroup --system --gid 1001 nodejs
23+
RUN adduser --system --uid 1001 nextjs
24+
25+
COPY --from=builder /app/public ./public
26+
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
27+
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static
28+
COPY --from=builder /app/prisma ./prisma
29+
COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma
30+
31+
USER nextjs
32+
33+
EXPOSE 3000
34+
ENV PORT=3000
35+
ENV HOSTNAME="0.0.0.0"
36+
37+
CMD ["node", "server.js"]

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 Vortex Sinclair
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

0 commit comments

Comments
 (0)