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.
News, scores, stats, fantasy, odds, and AI — all things NFL.
Translation pending
Sports & fitnessPython · TypeScriptGitHub @HarrisonellerOnlineOwner 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 ↗News, scores, stats, fantasy analytics, sportsbook odds, and an AI assistant that can answer questions and generate custom views on demand — all in one place.
LLMProvider interface — Anthropic / OpenAI implementations stubbed for one-line swapSee docs/RUNBOOK.md for full setup.
# Install Postgres (one-time)
brew install postgresql@16
brew services start postgresql@16
createdb nflapp
# Backend
cd backend
python -m venv .venv && source .venv/bin/activate
pip install -e .
cp ../.env.example ../.env # fill in GROK_API_KEY at minimum
alembic upgrade head
uvicorn app.main:app --reload --port 8000
# Frontend (in a new terminal)
cd frontend
npm install
npm run dev # http://localhost:3000
nfl-app/
├── backend/ FastAPI service, data adapters, AI layer, scheduler
├── frontend/ Next.js app, widget renderer, theming
├── docs/ ARCHITECTURE, DATA_SOURCES, AI_DESIGN, RUNBOOK
└── .env.example
Vercel (frontend, frontend/) + Railway (backend + Postgres, backend/). Use two Railway services: APP_ROLE=web (public API) and APP_ROLE=worker (scheduler). Full checklist: docs/DEPLOY.md.
Browsing teams, scores, news, and odds works without signing in. Accounts are optional and used for saved widgets, AI chat history, and per-user data when multi-user mode is on.
| Variable | Default | Purpose |
|---|---|---|
MULTI_USER_MODE | false | false: all API routes use the seeded system@local user (single-tenant). true: JWT required on protected routes (/widgets, /ai, etc.). |
SECRET_KEY | (required in prod) | Signs JWT access tokens |
JWT_EXPIRE_MINUTES | 10080 (7 days) | Token lifetime |
Enable multi-user locally: set MULTI_USER_MODE=true in repo-root .env, restart the backend, register at /register, then use the app signed in. Public pages still work anonymously; widget/AI endpoints need a Bearer token (stored in localStorage by the frontend).
API: POST /auth/register, POST /auth/login, GET/PATCH /auth/me, POST /auth/change-password — Bearer token on protected calls.
OAuth (Google / Apple): not implemented in this MVP. See docs/OAUTH.md for what would be needed.