Skip to content

florian/HNClient

Folders and files

NameName
Last commit message
Last commit date
Apr 17, 2017
Apr 16, 2016
Apr 22, 2016
Apr 16, 2016
Apr 22, 2016
Mar 9, 2017
Apr 24, 2016
Apr 17, 2017
Apr 17, 2017
Apr 17, 2017
Apr 22, 2016
Apr 22, 2016
Apr 22, 2016
Apr 17, 2017
Apr 22, 2016
Apr 22, 2016

Repository files navigation

HNClient – A desktop client for Hacker News

This app lets you comfortably read Hacker News without having to open an endless amount of tabs anymore. You can choose articles to view from a sidebar and can optionally read articles and their comments next to each other on a split screen. The app works on Mac, Linux and Windows.

(Downloads | Website)

Features

  • You can easily choose articles to view and switch to the comments, no more endless new tabs for HN
  • Optional split screen: View articles and their comments next to each other
  • Easily navigate the App with Vim like keyboard shortcuts
  • Comments are foldable
  • Things that are overlooked by most HN apps weren't forgotten, stuff like displaying HN polls, rendering PDFs or not showing a website for Ask HN posts
  • Automatically loads new articles if you scrolled down far enough
  • It's Open Source, you can change it however you like! :)

Keyboard shortcuts

action shortcut
next story j
previous story k
cycle between display modes (links, comments, both) l
next comment n
previous comment m
fold / expand the current comment enter
reload stories list r
display a list of all shortcuts h

Tech overview

  • Electron
  • ES6, React and Redux
  • Stylus and css-modules
  • Webpack
  • JavaScript Standard style
  • Mostly follows the conventions of the electron-react-boilerplate
  • Uses the nice node-hnapi which wraps HN's official API. HN's API itself is sadly not very usable so far, e.g. to fetch all 200 comments of a thread we'd need to do 200 requests, which would greatly degrade user experience. Thanks to node-hnapi this app does not need to do that.

A word on packaging

Currently the Windows and Linux builds don't use an installer program to bundle everything into a single file. I guess that would be the optimal packaging but I don't have any experience programming for Windows / Linux. So I'm hoping someone might contribute if it's important to them :)

Contributing

Please follow the JavaScript Standard style!

Developing

# Run both next to each other. The app will then automatically hot reload changed modules
$ npm run hot-server
$ npm run start-hot

Packaging

$ npm run build
$ npm run package # to package for the current platform
$ npm run package-all # for all platforms

Ideas

While I implemented all of the features I definitely wanted, there's also a list of feature ideas.