OpenTrailPaper
Open-source bike computer firmware for the LilyGO T5S3 4.7" E-Paper PRO, with offline maps, GPX routes, FIT recording and Bluetooth sensors.
Fantasy basketball tools for ESPN leagues — matchups, power rankings, and trade analysis.
Sports & fitnessTypeScript · ShellGitHub @spencer-s-hodsonOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Your fantasy basketball commissioner desk — power rankings, matchups, and league intel.
Commishop connects ESPN Fantasy Basketball leagues and gives commissioners a single place to track live standings, model matchup win probability, and publish locked weekly power rankings with AI write-ups.
espn_s2 / SWID cookies); switch between multiple connected leaguesUser → Better Auth session
→ tRPC (league.*)
→ Postgres (league credentials + locked ranking editions)
→ ESPN Fantasy adapter (live standings / matchups / power feed)
→ OpenAI (blurbs) on publish / backfill
→ Overview & Power Rankings UI
AUTH_ALLOWED_EMAILS.Domain terms (edition, blurb, publish job, etc.) are defined in GLOSSARY.md.
| Layer | Choice |
|---|---|
| App | Next.js (App Router), React, TypeScript |
| API | tRPC + TanStack Query |
| Auth | Better Auth |
| Database | PostgreSQL + Drizzle ORM |
| AI | OpenAI (power-ranking blurbs) |
| UI | Tailwind CSS, shadcn / Base UI |
| Hosting | Vercel (Fluid Compute + Cron) |
Scaffolded with Create T3 App; product code lives under src/app, src/server, and src/components.
Prerequisites: Node.js 22+, Docker (or Podman) for Postgres, and the env vars below.
cp .env.example .env
# fill in BETTER_AUTH_SECRET, DATABASE_URL, etc.
./start-database.sh # local Postgres from DATABASE_URL
npm install
npm run db:push
npm run dev
| Script | Purpose |
|---|---|
npm run dev | Dev server |
npm run build / start | Production build & serve |
npm run db:generate / db:migrate / db:push / db:studio | Drizzle Kit |
npm test | Unit tests (tsx --test) |
npm run check | ESLint + TypeScript |
See .env.example. Required for a full local run:
BETTER_AUTH_URL, BETTER_AUTH_SECRETDATABASE_URLCRON_SECRET (cron + mock seed routes)OPENAI_API_KEY (optional — blurbs skip if unset)AUTH_ALLOWED_EMAILS (optional invite allowlist)src/app/(dashboard)/ Overview & power rankings (auth-gated)
src/app/api/ Auth, tRPC, cron, ESPN logo proxy
src/server/better-auth/ Auth + invite allowlist
src/server/db/ Schema & client
src/server/api/ tRPC routers
src/server/espn/ ESPN adapter, rankings, blurbs, publish job
src/components/ Dashboards, league picker, brand
test/ Unit tests for ranking math, cron policy, etc.