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
To install as an application via Google Chrome Browser follow below steps:
- Open https://happy-burro.netlify.app in Chrome 70+
- Go to Settings (option on top right corner next to address bar)
- Choose “Install Ticker …” option and done!
These steps will install https://happy-burro.netlify.app as a desktop application and create a desktop shortcut.
Make sure that latest Node is installed.
If you plan on running the project via docker you will need docker and docker-compose
First, clone this repo!
There are two apps in this repo, the ui and telmetry services. You will need to start each one respectively.
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
To start telemetry:
$ cd telemetry/
Then, install all dependencies:
$ npm install
Finally, to run the project for production/development:
$ npm start
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 :)
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.
- 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
- [] 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