TrackingApp

Job ID: 39844169

Budget: €3,000 – €5,000 EUR

1) Product Summary

F1-style running tracker (watch + mobile + web) that shows real-time telemetry: position on circuit, gap to leader and chaser, performance colors (green/red/purple), laps/sectors, shortcut detection, and “create route” mode (record circuit by running it).
Monetization: monthly subscription and event access codes.

2) Scope by Platform
Common watch logic

Sensors/GPS: ~1 Hz sampling; speed filter (EWMA); route smoothing (Kalman/Savitzky-Golay).

Route projection: nearest-point on polyline + curvilinear distance s.

F1 telemetry:

Gaps: gap_lead, gap_chase (heavy calc done in mobile/backend; watch displays summary).

Colors: green = personal best, purple = event best, red = slower.

Sectors/laps: defined by s cuts.

Shortcut detection: distance > threshold for >T seconds, or abnormal Δs → flag.

“Create route” mode: record points (≥10 m apart) and send polyline back to mobile.

Comms: watch <-> mobile (short messages), mobile <-> backend (WebSocket/MQTT).

Garmin (Connect IQ)

Type: Watch App.

Language: Monkey C.

Messaging: Phone-App Messages / web requests.

UI: sector, gap texts, color indicator, icons (REC/OFF-TRACK), simplified mini-track.

Suunto

Rely on Suunto App SDK.

Equivalent UI (sector/gaps/colors, REC flag).

Recording mode; send points back to mobile.

Offload heavy calc to mobile/backend.

Polar

Similar approach via Polar SDK:

Watch shows gaps/colors/REC; mobile handles projection and gaps.

3) Technical Architecture
Backend

Node.js + Express (REST) + WebSocket/MQTT.

Database: Postgres + PostGIS or MongoDB (GeoJSON).

Redis Pub/Sub for real-time fan-out.

Services: auth & subscriptions, event codes, route CRUD, telemetry ingest, gaps/records/cheat detection, notifications.

API contracts

POST /positions: { event_id, user_id, ts, lat, lon, s?, v? }.

GET /events/:id/status: { leader_gap, chaser_gap, sector_color, flags }.

POST /circuits: { name, polyline, sectors }.

POST /recorded: { user_id, event_id, polyline[] }.

POST /codes/verify: { code } ⇒ { valid, event_id, expires_at }.

GET /me/subscription: status/expiry.

Mobile app (iOS/Android – one app for all brands)

Maintains WebSocket/MQTT with backend.

Forwards watch messages → backend; receives gaps/colors ← backend and sends to watch.

Map view (Mapbox/Google), “pit wall” view.

Account management, subscriptions, event codes.

Circuit upload to watch; record mode control.

Suggested stack: React Native/Expo.

Web (viewer/organizer)

React + Mapbox GL.

Dashboards for race organizers: positions, gaps, sectors, anti-cheat flags, CRUD of circuits/events/codes.

4) Algorithms / Rules

Projection: nearest-point to polyline (PostGIS ST_LineLocatePoint or client-side).

Speed: instant (EWMA filtered) + lap/sector averages.

Gaps: (s_leader − s_user)/v_ref; safe fallback when v_ref ≈ 0.

Colors:

Green = new personal best sector,

Purple = new event record sector,

Red = slower.

Shortcut detection: dist(point, polyline) > threshold OR abnormal Δs ⇒ flag.

Create route: start/stop recording; sample ≥10 m; simplify; save as circuit.

5) Non-functional

Battery: watch sends tiny messages (1 Hz, <200 B).

Latency: <500 ms E2E for gaps/colors.

Backend uptime: >95% MVP.

Privacy: TLS; minimal PII; pseudonyms optional.

6) Freelancer Deliverables

Common

Full source + README + build scripts (CI/CD basic).

API docs (OpenAPI).

Seed scripts (demo event + 10 bots).

Garmin

Connect IQ app (Monkey C) with UI (sector/gap/color), recording mode, phone messaging.

VS Code project + build .bat.

Tested in simulator + checklist of devices (Fēnix/Epix/Forerunner).

Suunto / Polar

Equivalent watch apps with messaging, recording, compact UI.

Test instructions.

Mobile (one app)

Screens: login, subscription, events, map viewer, controls (upload circuit, start/stop recording).

Watch connectors (Garmin, Suunto, Polar).

Stable WS/MQTT client.

Backend + Web

Node.js backend + Postgres/PostGIS or Mongo.

React+Mapbox admin/viewer.

Docker compose for local dev.
Related categories: Mobile App Development iPhone Android