A progressive Hacker News client built with Angular
⚡ Fast: Service Worker App Shell + Dynamic Content model to achieve faster load times with and without a network.
📱 Responsive: Completely responsive UI that can be installed to your mobile home screen to provide a native feel.
🚀 Progressive: Lighthouse score of 99/100.
Mobile Preview
Laptop Preview
Offline Support
This app uses a Service Worker to load quickly and work offline.
sw-precache
is used to serve local static resources (App Shell) cache first.sw-toolbox
is used to handle requests using thenetworkFirst
strategy. If a request fails, the app will fulfill the request from the cache. This means previously loaded pages will now work offline.
Manifest
With Chromium based browsers for Android (Chrome, Opera, etc...), Angular 2 HN includes a Web App Manifest that allows you to install to your homescreen.
Themes
Built in theme engine!
Current themes:
- Default
- Night
- Black (AMOLED)
More to come!
Possible areas of improvement
- Realtime updating
- Server side rendering (Angular Universal?)
Feel free to send me feedback on twitter or file an issue! Feature requests are always welcome.
Build process
- Clone or download the repo
- If you don't have Angular CLI installed:
npm install -g angular-cli@latest
ng init
- Input
n
for each file to not overwrite any file changes ng serve
will kick off the server athttp://localhost:4200/
. Any changes you do to the source files should automatically reload the appng serve --prod --aot
will kick off a production build with uglifying, tree-shaking and Ahead-of-Time compilation
Click here to see a full list of what you can do with Angular CLI.
Note: Any Service Worker changes will not be reflected when you run the application locally in development. To test service worker changes:
ng build --prod --aot
to kick off a fresh build and update thedist/
directorynpm run precache
to generate the service worker filenpm run static-serve
to load the application along with the service worker asset using live-server
Contributors
A million thanks to some awesome people :)