NBA Feed
Your teams' news and games, with scores hidden until you reveal them.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Fantasy Premier League decision platform: deterministic projections, CP-SAT optimisers for transfers and captaincy, multi-gameweek planning. No LLM in the runtime path.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
AI-Powered Fantasy Premier League Decision Platform.
• Python 3.12+
• Node.js 20+
• A free Supabase account (PostgreSQL)
• A free Upstash account (Redis)
1. Create your cloud services (both free)
Supabase (PostgreSQL)
1. Go to supabase.com → New project
2. Settings → Database → Connection string → URI
3. Copy the URI (starts with postgresql://...)
Upstash (Redis)
1. Go to upstash.com → Create database → choose a region
2. Copy the REDIS_URL from the Details tab (starts with rediss://...)
Open backend\.env and paste your Supabase and Upstash URLs.
3. Set up and start the backendREADME 전문 보기 ↗Fantasy Premier League decision support: who to start, who to captain, which transfers are worth a hit, and when to play chips, with every recommendation explained by the numbers behind it. An iOS and Android app with a web dashboard, on a FastAPI backend.
The advice comes from a transparent projection model and exact optimisers, not a language model: every number traces back to FPL data, and the solvers say when an answer is proven optimal.
| Folder | What | Stack |
|---|---|---|
backend/ | API, projection model, optimisers, scheduled refresh, accounts and billing | Python 3.12, FastAPI, SQLAlchemy (async), Alembic, OR-Tools |
mobile/ | The iOS and Android app | Expo SDK 57, React Native, Expo Router, TanStack Query |
frontend/ | Web dashboard for signed-in users | Next.js 16, React 19, Tailwind |
docs/ | Developer documentation |
Hosted on free tiers: Render (API), Vercel (web), Supabase (Postgres and Auth), Upstash (Redis and QStash), RevenueCat (billing), Sentry and Healthchecks.io (monitoring).
You need Python 3.12 (3.14 is too new: asyncpg and pydantic-core have no
wheels for it), Node.js 22, and either Docker or free Supabase and Upstash
accounts.
Locally, with Docker:
docker compose up -d postgres redis
That matches the backend's default DATABASE_URL and REDIS_URL, so delete
those two lines from backend/.env after copying it in the next step.
Without Docker, create a free Supabase project (Settings → Database → URI,
with the scheme changed to postgresql+asyncpg://) and a free Upstash Redis
database, and put their URLs in backend/.env.
Windows:
cd backend
copy .env.example .env
.\setup.bat
macOS and Linux:
cd backend
cp .env.example .env
python3.12 -m venv .venv
source .venv/bin/activate
pip install -r requirements-dev.txt
Then, with the virtual environment active, create the tables and start the API:
alembic upgrade head
uvicorn app.main:app --reload --port 8000
(.\start.bat does the second line on Windows.) Check
http://localhost:8000/api/v1/health returns "status": "ok"; the interactive
API docs are at http://localhost:8000/api/docs.
There is no separate worker process. All background work is one refresh job,
triggered over HTTP. Locally, with JOB_TOKEN empty, it needs no token:
curl -X POST "http://localhost:8000/api/v1/jobs/refresh"
It pulls players and fixtures from the live FPL API, builds projections and
raises alerts; the first run takes a minute or two. To keep data fresh while
you work, set SCHEDULER_ENABLED=true in backend/.env and restart the API;
it then refreshes every REFRESH_INTERVAL_MINUTES.
With AUTH_REQUIRED=false (the local default) you can call team endpoints
from the API docs without signing in, e.g. GET /api/v1/decisions/{your FPL team id}.
cd frontend
npm install
cp .env.example .env.local
npm run dev
Open http://localhost:3000. The dashboard requires sign-in, so it needs a
Supabase project with Apple or Google configured
(docs/AUTHENTICATION.md) and its URL
and publishable key in .env.local. If you run on another port, add that
origin to CORS_ORIGINS in backend/.env and to Supabase's redirect URLs.
The app needs a development build (Expo Go lacks its native modules):
cd mobile
npm install
cp .env.example .env
npx expo run:android
Point EXPO_PUBLIC_API_URL at your computer's LAN IP, or 10.0.2.2 from the
Android emulator. Full instructions: docs/MOBILE_APP.md.
Install the backend test dependencies once inside the virtual environment
(setup.bat installs only the runtime ones):
pip install -r requirements-dev.txt
Then:
cd backend && .\test.bat
cd mobile && npm test
On macOS and Linux run the backend tests with
DATABASE_URL="sqlite+aiosqlite:///:memory:" ENVIRONMENT=test pytest -m "not network".
Everything else, including Maestro end-to-end tests: docs/TESTING.md.
| Document | Covers |
|---|---|
| ARCHITECTURE.md | Components, request flow, the refresh pipeline, data model, design decisions |
| AUTHENTICATION.md | Sign-in, token verification, authorisation, FPL team ownership, account deletion |
| PAYMENTS.md | Store billing via RevenueCat, the trial, entitlements, the webhook |
| MOBILE_APP.md | The Expo app: features, structure, running, builds |
| API.md | Conventions, errors, rate limits, and every route with its access level |
| TESTING.md | Suites, how to run them, CI, manual release checks |
| DEPLOYMENT.md | First deploy, routine deploys, migrations, rollback, app releases |
| STORE_LISTING.md | Store text, App Review notes, the review team, privacy and data safety answers |
| ENVIRONMENT_VARIABLES.md | Every setting, where it is read and where it is set |
| OBSERVABILITY.md | Logging, error and crash tracking, job and webhook monitoring, runbook |
The backend, web dashboard and mobile app are feature complete for a first release and covered by automated tests. Not yet done before launch: running the pending migrations and production configuration, real-device testing of sign-in, purchases and push, and submitting the store listings (STORE_LISTING.md). See DEPLOYMENT.md and the release checklist in SECURITY.md.
| SECURITY.md | Security review findings, OWASP mapping, release checklist |
| DESIGN_NOTES.md | Why the model, optimisers and pipeline work as they do |