Lexiverse
Lexiverse - 영어 학습자를 위한 AI 기반 문맥 독해 엔진
V.S.B. 공대 기술캠퍼스를 위한 기업용 LeetCode 분석 플랫폼, 학생·교직원 LeetCode 성과를 중앙에서 추적
Enterprise LeetCode Analytics Platform for V.S.B. College of Engineering Technical Campus. Centralised LeetCode performance tracking for students and staff.
교육TypeScript · JavaScriptGitHub @abish05온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
LeetTrack AI
Enterprise LeetCode Analytics Platform
V.S.B. College of Engineering Technical Campus · Coimbatore – 642109
A centralised dashboard that tracks the LeetCode performance of every student
and staff member in the college.
Only the administrator signs in. Students and staff never create accounts —
the admin uploads one spreadsheet, and a scheduled job reads each person's
public LeetCode profile once a day and stores a permanent daily snapshot.
Every report, chart and leaderboard is built from those snapshots.README 전문 보기 ↗A centralised dashboard that tracks the LeetCode performance of every student and staff member in the college.
Only the administrator signs in. Students and staff never create accounts — the admin uploads one spreadsheet, and a scheduled job reads each person's public LeetCode profile once a day and stores a permanent daily snapshot. Every report, chart and leaderboard is built from those snapshots.
Runs entirely on free tiers: Supabase Postgres + Vercel Hobby + GitHub Actions.
Dashboard — 12 KPI tiles (total users, active today, solved today, highest streak, averages by difficulty, weekly/monthly growth with trend arrows), a 30-day activity chart, a college-wide difficulty donut, top-performer / most-active / longest-streak highlight cards, and a department comparison.
Users — searchable, sortable, filterable roster with inline add/edit/delete, per-user "refresh from LeetCode", and Excel/CSV/PDF export honouring the active filters.
Individual profile — identity card with college and department rank, seven period counters (today / week / month / year / streak / best streak / contests), plus daily-activity, cumulative-progress, streak-history and global-ranking charts.
Daily Report — a dated snapshot of every profile. Pick any past date and the table reproduces that day exactly, with page totals and print support.
Leaderboard — daily / weekly / monthly / all-time, with a podium for the top three. Weekly and monthly are summed from snapshots, not guessed.
Split Report — how the college distributes across problems-solved bands (0, 1–10, 11–25, 26–50, 51–100, 101–200, 201–500, 501–1000, 1000+). Click a band to list exactly who is in it, and export just that band.
Department & Staff analytics — per-department totals, averages, streaks, active-today share, weekly volume, difficulty mix, and top / most-active / inactive callouts. Staff get a dedicated page separate from students.
Bulk import — drag-and-drop .xlsx / .xls / .csv with fuzzy header matching ("Reg No" and "Register Number" both work), row-level validation, and an import summary listing every skipped row with the reason.
Notifications — generated after each sync: new highest streak, top daily solver, inactive users, invalid profiles, and username changes.
Settings — sync schedule (with the exact UTC cron expression to paste into the workflow), inactivity threshold, sync history, and JSON backup/restore.
Plus: dark mode, keyboard search (⌘K), responsive down to mobile, and the college crest throughout.
Administrator (single account)
│
Next.js App Router UI
│
Next.js API routes
│
Prisma ── PostgreSQL
│
┌─────────────────────┴─────────────────────┐
│ │
users (current values) daily_snapshots (history)
│ │
└─────────────────────┬─────────────────────┘
│
GitHub Actions · once per day
│
LeetCode public GraphQL endpoint
Two levels of storage, deliberately:
users holds each person's latest known figures. Every list, filter and
leaderboard reads from here, so those pages need no joins.daily_snapshots holds one immutable row per user per day. Every
historical report, trend chart and weekly/monthly total is derived from here.todaySolved is computed as the difference between today's cumulative total and
the most recent previous snapshot — LeetCode does not expose "problems solved
today" directly.
| Layer | Choice |
|---|---|
| Framework | Next.js 15 (App Router) · React 19 · TypeScript |
| Styling | Tailwind CSS v4 + hand-rolled shadcn-style components |
| Charts | Recharts |
| Database | PostgreSQL (Supabase free tier) |
| ORM | Prisma 6 |
| Auth | Auth.js (NextAuth v5), credentials, admin only |
| Spreadsheets | SheetJS (xlsx) |
| PDF export | jsPDF + autoTable |
| Scheduler | GitHub Actions cron |
| Hosting | Vercel Hobby |
No paid service is required at any point.
Prerequisites: Node.js 20+ and a PostgreSQL database (local or Supabase).
git clone <your-repo-url> leettrack-ai
cd leettrack-ai
npm install
Create your environment file:
cp .env.example .env
Fill in DATABASE_URL, then generate the two secrets:
openssl rand -base64 32 # → AUTH_SECRET
openssl rand -hex 32 # → CRON_SECRET
Set ADMIN_EMAIL and ADMIN_PASSWORD to the credentials you want, then:
npm run db:deploy # apply migrations
npm run db:seed # create the administrator account
npm run dev
Open http://localhost:3000, sign in, and upload your spreadsheet at
Bulk Import. A ready-made example lives at
docs/sample-import.xlsx.
Then run one sync to populate the statistics:
npm run sync
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗