BikeControl (SwiftControl)
Use Zwift Click, Zwift Play, Shimano Di2, or any Bluetooth controller with MyWhoosh, Rouvy, Zwift, and more. Free to try on iOS, Android, Windows, and macOS.
Make weekly NFL game picks and track standings against other participants
Translation pending
AI summary · website content
Sports & fitnessHTML · JavaScriptGitHub @phaynes2326-rgbOnlineOwner 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 ↗Same app as before, built to run as a real website instead of a Claude artifact. Each person's picks are private while the week is still open, PIN-protected, and lock in permanently once submitted — after that, everyone can see everyone's picks for that week.
/api/storage.js, a small serverless
function backed by a Redis database (not Claude's artifact-only storage).locked:week{n}:{name}) and rejects any further changes to
them — even a direct API call, not just the button in the UI.Push this folder to a GitHub repo, then import that repo into Vercel (vercel.com → New Project → select the repo).
Add a database. In your project, open Storage in the sidebar →
Create Database / Browse Marketplace → install "Upstash for
Redis". Create a database and connect it to this project, for all
three environments (Production, Preview, Development). Vercel injects
KV_REST_API_URL / KV_REST_API_TOKEN (or UPSTASH_REDIS_REST_URL /
UPSTASH_REDIS_REST_TOKEN) automatically — api/storage.js checks for
either name.
Set everyone's PINs. In the project's Settings → Environment
Variables, add a variable named PICK_PINS with a JSON value mapping
each name to a short PIN, e.g.:
{"Ace":"4821","Cisco":"1093","Dad":"5567","Lena":"2245","Mom":"8830","Tonio":"3391"}
Pick your own numbers — these are just examples. Add this for Production (and Preview/Development if you use those). Tell each family member their own PIN separately from the link you send them (e.g. text it, don't put it in the link).
Also add a second variable, COMMISSIONER_PIN, with a single PIN of your
own choosing (e.g. 7412). This gates the "enter final results" panel —
only whoever knows this PIN can open it and record game outcomes.
Redeploy so the build picks up the new environment variables.
Visit your *.vercel.app URL.
Each family member's link is yoursite.vercel.app?user=Name (e.g.
?user=Dad). Build each one yourself and send it to that person — there's
no in-app list of everyone's links. Send each person their link and,
separately, their PIN. The first time they open their link they'll be
asked for the PIN; after that it's remembered on their device (stored in
that browser only), so they won't need to re-enter it every visit.
If someone's PIN is ever compromised (e.g., a shared family device), just
change it in PICK_PINS, redeploy, and their old saved PIN on every device
stops working — they'll be asked to enter the new one next time.
npm install
vercel dev
vercel dev needs the same environment variables locally, including
PICK_PINS — run vercel env pull after linking the project to pull them
into a .env.local file.
results:week{n}), progress counts, and lock status
(locked:week{n}:{name}) are intentionally public — everyone needs to
see final results and who's submitted. Only the specific teams someone
picked stay gated, and only until that person submits.WEEKS object near the top of the
<script> in index.html — add a new week's games there each week and
redeploy.COMMISSIONER_PIN,
entered once per device the same way the personal pick PINs work.