Planning output only; no application code yet.
Key findings driving the design:
- The Bryton Rider 650 has on-device Wi-Fi (Main Menu -> Data Sync) and
uploads to Bryton's cloud with no phone and no Bryton Active app. Paired
with the reverse-engineered Bryton cloud API — which returns the original
unmodified FIT bytes — this makes ride sync fully hands-off, and higher
fidelity than the current Strava route (Strava's API cannot return the
original file, only smoothed streams).
- Build fresh rather than forking Endurain or FitTrackee; borrow Endurain's
gear/component structure and strava-gear's retroactive time-ranged wear
computation.
- PWA rather than a native iOS app: iOS 16.4+ gives home-screen PWAs real
push notifications, which was the only thing that used to force native.
Docs:
docs/PLAN.md stack, schema, ingestion, auth, notifications, roadmap,
CI/CD, risks, verification
docs/RESEARCH.md Bryton cloud protocol, FIT library comparison,
maintenance intervals, geo services, Gitea gotchas
docs/DECISIONS.md decisions taken, alternatives rejected, rationale
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
40 lines
407 B
Plaintext
40 lines
407 B
Plaintext
# Python
|
|
__pycache__/
|
|
*.py[cod]
|
|
.venv/
|
|
venv/
|
|
.mypy_cache/
|
|
.ruff_cache/
|
|
.pytest_cache/
|
|
*.egg-info/
|
|
|
|
# Node
|
|
node_modules/
|
|
.svelte-kit/
|
|
build/
|
|
dist/
|
|
.vite/
|
|
|
|
# Environment & secrets
|
|
.env
|
|
.env.*
|
|
!.env.example
|
|
*.pem
|
|
*.key
|
|
|
|
# Data — never commit ride files, blobs, or dumps
|
|
blobstore/
|
|
import_inbox/
|
|
*.fit
|
|
*.gpx
|
|
*.tcx
|
|
*.sql
|
|
*.dump
|
|
!apps/api/tests/fixtures/fit/*.fit
|
|
|
|
# OS / editor
|
|
.DS_Store
|
|
.idea/
|
|
.vscode/
|
|
*.swp
|