BikeControl (SwiftControl)
使用 Zwift Click、Zwift Play、Shimano Di2 或任何藍牙控制器,搭配 MyWhoosh、Rouvy、Zwift 等。iOS、Android、Windows、macOS 均可免費試用。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证KomplexMojo/NordicAim
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Photograph your target. Confirm shot placement. Run analysis. Spot trends.
Free. Runs on your iPhone. Nothing leaves your phone.
NordicAim reads the paper target you just shot at 50 m and tells you what happened.查看完整 README ↗NordicAim reads the paper target you just shot at 50 m and tells you what happened.
You always have the last word. Every hole and the alignment can be corrected by hand, and the score updates.
Two printed sheets are supported today: the sighting sheet and the Olympic 50 m rifle target used for precision work, shot with a .22 at 50 m.
The score is only as good as the hole-finding behind it, so that is where the work went. Everything below runs on your phone, with no upload and no waiting on a server.
It is not perfect, and it does not pretend to be. Suggested holes score nothing until you confirm them, and you can add, move or remove any shot. The engine does the tedious part, and you always have the last word.
Each athlete installs NordicAim on their own phone in about ten seconds. There is no account to create and nothing to set up for the squad.
Results move between athletes and coaches as summary images, and as coach images that sum up your recent sessions. Every image states which scoring rule was used and how many shots were found, so a coach reading it knows exactly what the numbers mean. If the squad compares scores, agree on one scoring rule in Settings first.
There is no shared team account or dashboard. Each phone keeps its own history.
The first load downloads the image analysis engine, so do it on Wi-Fi before you head to the range. There is no App Store and no Apple account involved.
Your sessions live on the phone. Deleting the Home Screen app deletes them, so use Settings, Back up now every so often and keep the file in Files or iCloud Drive. NordicAim reminds you when it has been a while.
Something look off? Tap a target's picture on the results screen to add, move or remove a hole, or nudge the alignment. The score updates as you go.
When the session is done, NordicAim builds one summary image: your name and club if you set them in Settings, the session, the shooting and lighting conditions, every target with its score and group, and the session analysis. It is your brag sheet, and it is made to be shared. Tap Share and send it from the iPhone share sheet to your Strava or Garmin Connect activity as a photo, or to a coach or the squad chat.
You choose what to share and when. NordicAim does not connect to Strava or Garmin, and nothing is posted for you. The image leaves your phone only when you share it, and your photos never do.
The Analysis screen, on the bottom bar beside Patterns, shows how you are moving with one point per session: score or hit rate, group size, accuracy and point of impact, with a dashed trend line from three sessions on the score, group size and accuracy.
Goals lets you set where you want your prone and standing score, group size, accuracy and biathlon hits to be, draws each goal on its chart, and says whether the sessions since have hit it. Each session's results and summary image show whether it met the goals you had at the time.
The Board ranks shooters by the average of their best 5 precision targets, one board for prone and one for standing. There is no server: you share your signed submission as a file and import other shooters', so each phone keeps its own board. Every target is scored again on the phone that receives it, targets corrected by hand are marked (and flagged when the correction moved the score more than 10 points). Anyone can open a target to see its automatic score beside a corrected one.
Sessions, Patterns, Analysis and Goals can each be narrowed to one season: winter, spring, summer or fall.
Want the whole routine, from installing to comparing against your history? See the workflow, step by step.
New to it? The guide covers getting good photos, reading the results, corrections, patterns, goals, the Board and backup in more detail.
NordicAim was built with Claude, and a cross-model security and code review has been performed on it: an independent review run in Cursor, by a different model from the one that wrote the code. Every finding is logged as a GitHub issue, so what was found, and what was done about it, is public. The privacy design is easy to check for yourself: no server, no runtime network calls, and a content security policy that enforces it.
NordicAim is an early release, built in the open with biathletes who shoot. If a score looks wrong, a screen is confusing, or you want something it does not do, open an issue. A photo of the target helps, but check it carries no location you would rather keep private.
Using the app is free for everyone, including clubs, teams and coaches. The terms of use ask only that you don't sell it or bundle it into something paid, don't host or copy it elsewhere, and leave the KomplexMojo credit on summary images.
The source code is published so you can see how it works, under the PolyForm Strict License 1.0.0: you may read and run it for noncommercial use, but not modify or redistribute it, and code contributions are not accepted (why). It is source-available, not open source. The "NordicAim" name and logo are not licensed for reuse. Third-party components keep their own licences (NOTICE.md).
NordicAim is built in response to what its users ask for. If it earns a place in your training, supporting its development is the best way to shape what comes next.
Developed using NordicAim by KomplexMojo. Every summary image carries that credit.
NordicAim is a Vite and React web app that runs entirely in the browser on the phone, with no backend. The analysis pipeline (OpenCV in a Web Worker), scoring and rendering are all client-side and covered by unit and end-to-end tests.
corepack enable picks up the pinned packageManager version).pnpm install
pnpm dev # http://127.0.0.1:3874
pnpm dev:test # same, with VITE_FAKE_CAMERA=1 (used by Playwright)
pnpm build # tsc -b && vite build
pnpm preview # http://127.0.0.1:4173
pnpm check # typecheck + lint + unit tests + privacy check (the gate for every milestone)
pnpm typecheck
pnpm lint
pnpm test # Vitest unit tests
pnpm test:e2e # Playwright, mobile Chromium + mobile WebKit
pnpm test:e2e:offline # Playwright against the production build, offline after the first load
pnpm check:privacy
pnpm make:icons # regenerate public/icons/* (sharp; concentric-ring motif)
pnpm docs:screens -- --hero-only # rebuild docs/assets/hero-screens.png from the phone screenshots in docs/assets/screens/
pnpm docs:screens # preview only: replaces those real screenshots with demo-data ones from the fake-camera build
Pushing to main deploys to GitHub Pages (.github/workflows/pages.yml). To run the capability checks on an iPhone, open
https://komplexmojo.github.io/NordicAim/#/diagnostics in Safari and again after Add to Home Screen,
since some checks (storage persistence, share) behave differently as a standalone app.
| Doc | What it is |
|---|---|
docs/guide/ | The user guide |
docs/brand/ | Brand kit: logo, palette, voice, app icons |
docs/DESIGN.md | Original product design (verbatim) |
docs/DESIGN-REVISIONS.md | Owner decisions that define the MVP and supersede parts of the design |
docs/BACKLOG.md | Post-MVP items (not to be built without go-ahead) |
docs/PLAN.md | Plan: verified facts, decisions, corrections, risks, open questions |
docs/spec/ | Source-of-truth specs: analysis pipeline, geometry and scoring, data model and storage, capture overlay, metadata and lighting, diagrams and summary image, patterns, analysis and the coach image, backup and restore, provenance, privacy, storage and hosting |
docs/milestones/ | MVP milestones sized for lower-reasoning agents |
AGENTS.md | Rules for any agent implementing a milestone |
Apple Health, Strava and multi-user accounts.
There is no server: all data stays on the phone. This repository is public and contains code only. The original target
photos contain GPS and live only in the gitignored fixtures/private/. pnpm check:privacy fails if any tracked image
carries GPS EXIF.
docs/reference/| Reference target photos (metadata stripped) and the owner's example diagrams |
fixtures/reference/ | Golden shot fixtures, GPS-free EXIF sidecars and sample, seed calibrations, HEIC test image |