LADA Shift Sheets
LADA 레크하키 팀 교대 기록을 경기 영상으로 측정
Garmin, Apple Watch 등 시계를 연결하거나 휴대폰으로 기록해 GPS 트랙, 포일링 거리, 펌프 빈도 등을 분석합니다
Verbinde deine Uhr (Garmin, Apple Watch, Wear OS, Amazfit, Polar, COROS, Suunto, Xiaomi) oder nimm per Handy auf und werte jede Pump-Foiling-Session aus: GPS-Track, Foiling-Distanz, Pump-Frequenz und
스포츠·피트니스TypeScript · PythonGitHub @kechel온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Pumpfoil - Track Every Pump
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Record and analyze pump foiling sessions from your sports watch — GPS track, foiling distance, pump cadence and glide phases. Garmin, Wear OS, Apple Watch and Amazfit (Zepp OS), with native iOS/Android apps and a web PWA.
Pump foiling means riding a hydrofoil with no wind, waves or motor — you stay up purely by
pumping the board rhythmically. Pumpfoil records these sessions on your watch and turns the
raw GPS + accelerometer data into a detailed analysis: how long you were actually foiling, how
efficiently you pumped, and where you rode.README 전문 보기 ↗[!WARNING] Service status (9 Oct 2026): pumpfoil.org is wrongly blocked by the DNS4EU filtering resolvers. If the app or the website shows “Hostname pumpfoil.org not verified” with a certificate for
*.joindns4.eu, your phone or network uses the filtering DNS from DNS4EU, which currently sends pumpfoil.org to its warning page. Every other DNS service resolves it correctly. We have reported the false positive (DNS4EU / Whalebone ticket 58102).Workaround until it is fixed: on Android set Settings → Network → Private DNS to Automatic (or to
unfiltered.joindns4.eu); on other devices use your provider's DNS or the unfiltered DNS4EU resolver86.54.11.100. Updates on this page.
Record and analyze pump foiling sessions from your sports watch — GPS track, foiling distance, pump cadence and glide phases. Garmin, Wear OS, Apple Watch, Amazfit (Zepp OS) and Huawei (beta), with native iOS/Android apps and a web PWA.
pumpfoil.org · License: AGPL-3.0
Pump foiling means riding a hydrofoil with no wind, waves or motor — you stay up purely by pumping the board rhythmically. Pumpfoil records these sessions on your watch and turns the raw GPS + accelerometer data into a detailed analysis: how long you were actually foiling, how efficiently you pumped, and where you rode.
The signature feature: your track is colored exactly over the foiling phases (by speed, heart rate or pump cadence) with every detected pump stroke marked right on the route.
.fit file (or Garmin's ZIP export).| Track your progress over time | Community records |
| Community records per spot | Sessions — yours & everyone's |
| Detailed per-run stats | |
Native apps on every platform — one account, one analysis backend.
📱 Android phone
📱 iOS phone
📱 No watch? Record with the phone (Android & iOS app — strapped to the board or in a pocket)
⌚ Wear OS
⌚ Apple Watch
⌚ Garmin (all ~78 Connect IQ devices)
⌚ Amazfit (Zepp OS)
⌚ Huawei (HarmonyOS — new, beta)
| Directory | Stack | Purpose |
|---|---|---|
watch/ | Monkey C (Connect IQ) | Garmin recorder (all ~78 devices): records GPS + raw accelerometer, uploads raw data |
android/ | Kotlin · Jetpack Compose | One Gradle project: Android phone app (:app) + Wear OS recorder (:wear) |
watch-apple/ | Swift · SwiftUI | iOS companion app (Sources-iOS/) with embedded Apple Watch recorder (Sources/) |
watch-zepp/ | JavaScript · Zepp OS (@zeppos/zml) | Amazfit recorder: records GPS + heart rate, uploads via the Zepp app |
server/ | Python · FastAPI · PostgreSQL · numpy/scipy/scikit-learn | Ingest, immutable raw storage, foiling/pump detection, REST API |
web/ | React · Vite · TypeScript · Tailwind · Leaflet | Installable PWA: sessions, map, charts, labeling, community |
deploy/ | systemd · Apache | Service unit, reverse-proxy config, backup timers |
Raw session data is always stored complete and unmodified, so any future detection model can be re-run on old sessions. Detection runs server-side (fast iteration in Python, no watch recompile).
Server
cd server
python3 -m venv .venv && . .venv/bin/activate
pip install -e .
cp .env.example .env # then set DATABASE_URL (Postgres is required)
uvicorn app.main:app --reload --port 8090
# API docs: http://localhost:8090/api/docs (only with FOIL_API_DOCS=1)
Web
cd web
npm install
npm run dev # Vite dev server, proxies /api to :8090
Garmin watch — requires the Garmin Connect IQ SDK
and a developer key (see watch/setup-sdk.sh). The SDK is not included (distributed by Garmin
under its own license). Build one device with watch/build.sh <device>, or all manifest devices
with watch/build-all.sh (also generates the download catalog the website serves).
Android phone + Wear OS — one Gradle project under android/ (modules :app and
:wear), Kotlin + Jetpack Compose. Build/verify with ./gradlew :app:compileDebugKotlin /
:wear:compileDebugKotlin (JDK 21).
iOS app + Apple Watch — watch-apple/, Swift + SwiftUI, generated with
xcodegen (project.yml); built in Xcode on macOS.
The raw upload format (GPS + int16 accelerometer chunks) is specified in
docs/data-format.md.
Pumpfoil is a community platform: by design, your sessions are visible to other users in the community feed. What it will never do is sell your data or hand it to third parties for advertising or tracking. This repository contains source code only — no user accounts, recordings, databases or Garmin SDK files.
Pumpfoil is free software, licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). In short: you may use, study, modify and redistribute it, but if you run a modified version as a network service, you must make your source available to its users.
It is a community project — contributions are welcome.