Giter Club home page Giter Club logo

mb-rider-level's Introduction

Mountain Bike Rider Metrics

DGMD S-14 Final Project

Group 3

Amaliya Akopyan, Hannah Halvorsen, Nick Alico

Trail Score

Rider Score


The Mountain Bike Rider and Trail Metrics application aims to provide mountain bikers with a personalized lense into how they are performing, and where their training may take them next. The application integrates your performance metrics with crowd-sourced mountain bike trail data to help inform riders on which trails near them may be a safe, incremental challenge in their training journey.

The app provides 2 novel performance measurements: Trail score and Rider score.

  • Rider Score = Informed personal rating based on a rider's activity history
    • 1-10 scale
  • Trail Score = Crowd-sourced trail details and user input, including measurements such as average speed and average duration, which provides riders with grounding information which can be used as suggestions of what trails are truly approachable around their current rider performance level.
    • 1-10 scale

Much of our motivation extends from the fact that personalized performance insight has become a booming field in the fitness space, yet personalized trail suggestions seem to be largely underexplored. The MTB IMBA Trail Difficulty Scale was created as a helpful generalized guide for riders to follow (you may recognize this as the ski/snowboarding difficulty scale), however this is far too generalized and cannot provide adaptive insight as bikers train and improve. The Rider Score and Trail Score aim to alleivate this descrepancy by integrating current rider performance metrics alongside up-to-date trail difficulty insight. This migration aims to improve safety for riders, encourage trail discovery, and motivate bikers to incrementally challenge themselves while having fun at the same time.

Diagram of Score Metrics

Score Diagram Drawing

Requirements

  1. Must have npx installed
  2. Must have an iOS device
    • Note: The app can be run in the iOS simulator as well
  3. Must have the Expo Go mobile app installed on your smartphone

How to Run

  • Clone the project
  • Run npm install to install the necessary depenedencies

Start the application server:

npx expo start
  • Then, open the Camera app on your iPhone. In your terminal, you should see a QR code is generated. Scan the QR code with your camera.
  • This will prompt the Expo Go application to launch.
  • Allow the app to load, and you will see the application render.

How to stop

  • Press CTRL + C to kill the current server process.

API Documentation

Testing our API and Score Calculations

  • In order to test our score calculations, please visit our FastAPI Swagger endpoint, which serves as the source of our backend documentation and playground for interfacing with our score logic.
  • All backend code is located in this Gitlab

Data:

  1. If data is not already populated, execute the /mock/ endpoint. This causes the following steps:
  • One user created (factory.py)
  • 6 trail sources created (factory.py)
  • 6 Trail completion source created (factory.py)
  • Sensors and Signals area added
    • See our Google Sheet and specifically the signals db sheet
      • All columns except lat, long, trail_id, user_id, and time are treated as sensors
      • Thus, all rows of the table are treated as signals
  • After /mock/ endpoint is executed, you can add additional data as you wish. Be sure you create unique trail_id and user_id for any new items. For instance, if you try to create new trail_completion with user_id=1 and trail_id=1, the system will return an error.
  • Currently not all CRUD operations are covered. There are no endpoints to delete objects (but you can always reset dataset with default data by using /mock/). There are also no endpoints to update objects.

Scores:

  • Trail score and Rider score are re-calculated each time GET is executed. Score is represented if fetching a single object only (i.e. /users/<id> but not /users/

Project Architecture

Project Architecture

Sample Core Database Architecture

Database Architecture

Resources:

mb-rider-level's People

Contributors

nro337 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.