I think everyone should build their own HN reader at least once in their life. This is mine and its pink.
I wanted a good HN experience on mobile something I could pull up on the train and browse comfortably. So I built a PWA that works well on mobile and feels native on the phone.
Along the way, I kept adding things:
Semantic search – Stories are embedded with OpenAI's text-embedding-3-large and indexed in MongoDB 8.2's Vector Search. Search combines vector similarity and full-text via Reciprocal Rank Fusion, so you can find stories by meaning, not just keywords.
Personalized feed: A profile vector is built from your reading history and bookmarks (weighted by time spent and recency). After a few stories, the feed adapts to your interests.
Content extraction: A Playwright-based scraper fetches article text, generates thumbnails, and extracts metadata.
Real-time updates and infinity scroll. Auth is passkey-first (WebAuthn) and works without personal information.
Stack: Angular 21, FastAPI (Python 3.14), MongoDB 8.2, Valkey for job queues.
It's a hobby project and I had a lot of fun building it. Feedback welcome!