All Projects → thomaschampagne → Elevate

thomaschampagne / Elevate

Licence: mpl-2.0
Browser extension for strava. "Elevate" tracks your fitness and progressions over time. Analyse deeper your activities & segments. And more... https://thomaschampagne.github.io/elevate/ (formerly named stravistix)

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Elevate

Headereditor
Manage browser's requests, include modify the request headers and response headers, redirect requests, cancel requests
Stars: ✭ 338 (-59.42%)
Mutual labels:  chrome, webextension
Octotree
Browser extension that enhances GitHub code review and exploration. You can download Octotree for your browser from our website.
Stars: ✭ 21,726 (+2508.16%)
Mutual labels:  chrome, opera
Webextension Toolbox
Small CLI toolbox for cross-browser WebExtension development
Stars: ✭ 365 (-56.18%)
Mutual labels:  chrome, webextension
Epiboard
Web Extension — A new tab page extension with material design and useful features 🆕 🎉
Stars: ✭ 262 (-68.55%)
Mutual labels:  chrome, webextension
Browser
Useragent analysis tool.浏览器分析判断工具 - 用户代理、操作系统信息
Stars: ✭ 789 (-5.28%)
Mutual labels:  chrome, opera
Jjb
一个帮助你自动申请京东价格保护的chrome拓展
Stars: ✭ 3,083 (+270.11%)
Mutual labels:  chrome, webextension
Extensions
Source code of Raindrop.io browser extension (Chrome, Firefox, Opera)
Stars: ✭ 446 (-46.46%)
Mutual labels:  chrome, opera
Geolocate-IP-Browser-Extension
A browser extension, which shows you the origin of your IP address.
Stars: ✭ 21 (-97.48%)
Mutual labels:  opera, webextension
Webextension Pixiv Toolkit
A web extension for Pixiv
Stars: ✭ 513 (-38.42%)
Mutual labels:  chrome, webextension
Awesome Meta And Manifest
⚡ Awesome collection of meta tags & manifest properties.
Stars: ✭ 499 (-40.1%)
Mutual labels:  chrome, opera
Useragent Switcher
A User-Agent spoofer browser extension that is highly configurable
Stars: ✭ 261 (-68.67%)
Mutual labels:  chrome, webextension
Web Developer
A browser extension that adds various web developer tools to a browser.
Stars: ✭ 532 (-36.13%)
Mutual labels:  chrome, opera
Motrix Webextension
A chrome extension for the Motrix Download Manager
Stars: ✭ 253 (-69.63%)
Mutual labels:  chrome, webextension
Fofa view
FOFA Pro view 是一款FOFA Pro 资产展示浏览器插件,目前兼容 Chrome、Firefox、Opera。
Stars: ✭ 291 (-65.07%)
Mutual labels:  chrome, opera
page-shadow
A Chrome, Firefox, Opera and Edge extension to increase contrast, decrase brightness and invert color of websites
Stars: ✭ 14 (-98.32%)
Mutual labels:  opera, webextension
Scriptsafe
a browser extension to bring security and privacy to chrome, firefox, and opera
Stars: ✭ 434 (-47.9%)
Mutual labels:  chrome, opera
flagCookies
A cookie manager, browser add-on to manage and flag cookies. On stereoids.
Stars: ✭ 42 (-94.96%)
Mutual labels:  opera, webextension
tab-counter
A button badge that shows the number of tabs open in a window
Stars: ✭ 35 (-95.8%)
Mutual labels:  opera, webextension
Metamask Extension
🌐 🔌 The MetaMask browser extension enables browsing Ethereum blockchain enabled websites
Stars: ✭ 6,585 (+690.52%)
Mutual labels:  chrome, opera
Shortkeys
A browser extension for custom keyboard shortcuts
Stars: ✭ 522 (-37.33%)
Mutual labels:  chrome, webextension

Build Status Artifacts Downloads Language grade: JavaScript Total alerts Chrome Web Store Chrome Web Store Chrome Web Store Chrome Web Store

Install Elevate

From a Chrome based browser

Go to https://thomaschampagne.github.io/elevate/

You should be able to install it in all Chrome based browser such as Chrome, Chrome Canary, Chromium, Opera, Vivaldi, Yandex, and more ...

From continuous integration

Using latest develop branch builds: https://thomaschampagne.github.io/elevate/#/builds

Install steps with a standalone build: https://github.com/thomaschampagne/elevate/wiki/How-to-install-elevate-build-archive

From the sources

Go to chapter Environment setup.

Development

Project structure description

The project is split into 2 sub-projects: the core and the embedded app.

Core

The core contains the plugin's behaviour that acts directly on strava.com website. This includes extended stats on activities & segments efforts, best splits, google maps support, etc...

The core sources are located in plugin/core directory

Embedded app

The embedded app contains features like fitness trend, year progressions, ... and global plugin settings such as common settings, athlete settings & zones settings.

The embedded app sources are located in plugin/app directory

Notice: The plugin/common directory contains sources shared by both sub-projects.

Description of frameworks & tools used.

Core and embedded app have been developed using TypeScript language. TypeScript adds typing & class-based syntax over javascript then compiles back to JavaScript. Understand TypeScript in 5 minutes.

At a glance...

Core dependencies

  • Webpack as packager and dynamic EcmaScript module loader.
  • Q as promise library for JavaScript.
  • Chart.js for JavaScript charting.

Embedded app dependencies

Shared dependencies

  • Lodash to get a whole mess of useful functional programming helpers in typescript/javascript.
  • MomentJS to parse, validate, manipulate, and display dates and times.

Tools

  • NodeJS as javascript runtime environment.
  • Npm as package manager to fetch project dependencies

Environment setup

Install requirements

Here's what you need to install to run the extension in a chrome based browser:

  • Chrome based browser (Chrome, Chromium, Chrome Canary, Opera,...), of course...
  • NodeJS here. Version 10.x is required.

That's all :)

Clone the project

Using HTTPS

git clone https://github.com/thomaschampagne/elevate.git

Or using SSH

git clone [email protected]:thomaschampagne/elevate.git

Fetch NPM dependencies

The npm command should be installed on your system through the NodeJS installation.

Enter in project directory

cd elevate

Then install NPM dependencies with

npm install

Build plugin

Once you have installed the NPM dependencies, you can build the plugin with the following command:

npm run build

Both core and embedded app will be built.

Once the build is completed, the plugin will be located in dist/ directory.

A production build can be also run with

npm run build:prod

This will disable TypeScript debug sources map and enable Ahead-of-Time compilation for embedded app.

Load plugin into your browser

Into your chrome based browser:

  • Open new tab and type chrome://extensions, then enter.
  • Tick Developer Mode checkbox.
  • Click Load Unpacked Extension button, then choose dist/ directory (this is where you have the manifest.json file)
  • Make sure to disable other instances of elevate. You can re-enable them back from same tab.
  • Open strava.com

Build plugin on files changes

In order to avoid to re-run the painful npm run build task on each file changes. You could run the following command:

npm start

This task will watch for files changes and automatically rebuild plugin to dist/ directory. It's a way more suitable and faster for a development workflow.

Run unit tests

The below command will run core and embedded app unit tests into a headless chrome.

npm test

Should be run and has to pass before any work submission.

Packaging

You can package the extension with the following command

npm run package

A production build will be executed for this task.

On packaging done, a release archive will be generated in package/ directory.

Package with Docker

Create docker image from Dockerfile

docker build . -t elevate-chrome-builder

Run a docker production build through a container. Replace /path/to/your/directory/ with a folder on your host to fetch the packaged build when done.

docker run --rm --name elevate-chrome-build -v /path/to/your/directory/:/package elevate-chrome-builder

Clean project

Simply run

npm run clean

This will clean dist/, package/ & *.js *.map generated files

Git-Flow Repository structure

The project repository is fitted for GitFlow branches management workflow.

Learn more @ http://nvie.com/posts/a-successful-git-branching-model/

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].