/ticker

Primary LanguageJavaScript

ticker

Note: if the live version does not display data, it is likely due to rate limits w/IEX Cloud, running locally should do the trick! You can also bring your own API token https://happy-burro.netlify.app?token=[IEX_Cloud_Token]

Live version: https://happy-burro.netlify.app

Install As Desktop Application

To install as an application via Google Chrome Browser follow below steps:

  1. Open https://happy-burro.netlify.app in Chrome 70+
  2. Go to Settings (option on top right corner next to address bar)
  3. Choose “Install Ticker …” option and done!

These steps will install https://happy-burro.netlify.app as a desktop application and create a desktop shortcut.

Running Locally

Prerequisites

Make sure that latest Node is installed.

If you plan on running the project via docker you will need docker and docker-compose

Instructions

First, clone this repo!

There are two apps in this repo, the ui and telmetry services. You will need to start each one respectively.

UI

To start the ui:

$ cd ui/

Then, install all dependencies:

$ npm install

Finally, to run the project for development:

$ npm start

Or, to run the project for production:

$ npm run build && npm run serve

Telemetry

To start telemetry:

$ cd telemetry/

Then, install all dependencies:

$ npm install

Finally, to run the project for production/development:

$ npm start

Profiling / Performance

Profiling the UI is done using lighthouse, run the following to see report:

$ cd ui && npm run profile

The browser will automatically open with a fresh report 100/100 :)

Deploying

The live version is deployed via netlify. Netlify offers free static hosting w/http2. The telemetry service is not deployed anywhere, it needs to run locally for now.

To deploy the UI to netlify, simply land a PR, netlify will do the rest.

Features

  • fastest build on the market! ~7ms
  • deterministic build, dev & prod use exact same build
  • minimal dependancy graph for light dev experience, less dependancies, easy to configure
  • can be installed on desktop via install button or via chrome settings (see instructions above)
  • service worker pre-caches static assets for faster page load (index.html, entry.js, styles.css), and runtime (todo: introduce a cache invalidation strategy)
  • static server: gzip, cache-control, brotli
  • progressive loading w/ skeleton placeholders
  • virtualized lists and data tables
  • preact for small bootstrap
  • pre-commit hooks for linting and testing
  • responsive, looks good on mobile
  • progressive web app (PWA), network resilient, fallback experience when offline
  • lighthouse score 100/100
  • leveraging type checking & linting without the overhead of typescript or eslint (jsdoc, tslint, vscode, prettier)
  • containerized via Docker
  • nginx static server capable

Todos / Notes

  • [] fix Dockerfile's, docker-compose is not working, related to esbuild
  • [] enhance tests (skipped configuring jest, opt for tape, prefer integration test)
  • [] introduce target browsers, currently targeting esnext (es2020, chrome, firefox)
  • [] add post process css using postcss (add selector nesting, etc.)
  • [] enable search params in url bar (sharable urls)
  • [] needs cross browser testing, runs great on chrome!
  • [] inlining styles, need to use script and inject critical path css
  • [] introduce linting/type checking ci and precommit hooks