A calm, keyboard-first reader for Hacker News.
Hacker News has the best community on the web and a front end from 2007. Hackerly keeps the stories, the comments and the ranking exactly as they are, and rethinks how they read: editorial typography, a comment tree you can actually follow, a proper dark theme, and a keyboard that does everything.
- Every feed. Top, New, Best, Ask, Show and Jobs, with Hacker News’ own ranking and pagination.
- Comments you can follow. Threaded replies with indentation guides, collapse a comment or a whole thread with one click, author badges, and markers on comments posted since your last visit.
- Keyboard first.
j/kmove,oopens the article,cthe comments,ssaves,xcollapses,J/Kjump between threads,gchords switch feeds. Press?anywhere for the full list. - Search and commands.
/or⌘Kopens a palette that searches every story ever posted and jumps to any page. - Reading preferences. Light, dark or system theme. Text size, line height, content width, serif or sans comments, feed density, reply indentation, relative or absolute timestamps, and whether story titles open the article or the discussion.
- Yours, locally. Saved stories and comments, reading history, hidden stories and collapsed threads live in your browser. No account, no cookies; page views are counted anonymously with Vercel Analytics, and nothing you save ever leaves your device.
- Fast. Server-rendered and edge-cached pages, prefetching as you hover, and progressive loading for discussions with thousands of comments.
- Hacker News URLs work. Swap the domain and
/item?id=…,/user?id=…or/newestland on the right page.
| Key | Action |
|---|---|
j / k |
Next / previous story or comment |
J / K |
Next / previous thread |
p |
Parent comment |
↵ |
Open story, like clicking its title |
o / c |
Open the article / the comments |
x |
Collapse or expand a comment |
s / h / m |
Save / hide / mark read |
u / y |
Author profile / copy link |
g then h n b a s j |
Top, New, Best, Ask, Show, Jobs |
g then l y p |
Saved, History, Preferences |
/ or ⌘K |
Search and commands |
t / r / ? |
Toggle theme / refresh / this list |
Esc |
Back to the feed |
npm install
npm run dev # http://localhost:3000npm test # sanitizer tests
npm run typecheck
npm run build # production build in .output/The live site runs on Vercel: import the repository and deploy. Nuxt detects the platform, the route rules in nuxt.config.ts cache rendered pages at the edge with background revalidation, and Vercel Analytics and Speed Insights are enabled through their Nuxt modules. Any Node host works too: npm run build, then node .output/server/index.mjs.
Nuxt 4, Vue 3, TypeScript and Tailwind CSS 4, with the Newsreader typeface self-hosted. No component library, no state library, no database.
server/api/proxies the official Hacker News API with in-memory caching and a concurrency cap. Comment threads arrive in budgeted batches, so a 2,000-comment discussion renders progressively instead of all at once.shared/utils/sanitize.tsrebuilds Hacker News’ HTML from a small allowlist before anything reaches the page, and rewritesnews.ycombinator.comlinks to local routes.server/api/search.get.tsuses Algolia’s HN Search API, since the official API has no full-text search. It is the only file to touch for a different provider.app/composables/usePrefs.tsanduseLocal.tskeep preferences and local data inlocalStorage. A tiny inline script applies theme and typography before first paint, so there is no flash.app/composables/useKeys.tsanduseSelection.tsprovide the shortcut registry,gchords and the list cursor shared by feeds and comment trees.
Stories and comments come from the public Hacker News API; search from Algolia. Hackerly is an independent project, not affiliated with or endorsed by Y Combinator or Hacker News.

