Skip to main content
shippedLead Developer2023-2024

Nekobun Reader โ€” Modern RSS Reader for Knowledge Workers

A modern RSS reader with offline-first architecture, smart tagging, and reading analytics for knowledge workers

A modern RSS reader with offline-first architecture, smart tagging, and reading analytics for knowledge workers

Problem

RSS readers haven't evolved much in a decade. Most existing solutions suffer from:

  • Online dependency: Can't read without internet, no offline sync
  • Information overload: Hundreds of unread items with no smart prioritization
  • Lack of insights: No understanding of reading habits or content value
  • Poor UX: Cluttered interfaces that prioritize features over reading experience

Knowledge workers need a better way to consume and organize RSS feeds without drowning in information noise.

Approach

Nekobun takes an offline-first, reader-centric approach to RSS consumption:

Offline-First Architecture:

  • Local SQLite database stores all articles and metadata
  • Background sync engine fetches feeds every 15 minutes
  • Full-text search works completely offline
  • Read/unread state syncs across devices via optional cloud backup

Smart Tagging & Organization:

// Auto-tagging based on content analysis
const suggestedTags = await analyzeFeedItem({
  title: "Building RAG Systems",
  content: articleBody,
  source: "ai-newsletter"
});
// Returns: ["ai", "rag", "engineering", "tutorial"]

Reading Analytics:

  • Track reading time, completion rate, and engagement patterns
  • Identify high-value sources based on actual reading behavior
  • Surface articles similar to ones you've finished

Distraction-Free Reading Mode:

  • Clean typography with adjustable font size and spacing
  • Dark/light/sepia themes
  • Estimated read time and progress indicator
  • Keyboard shortcuts for power users (j/k navigation, m mark read, etc.)

Impact

Adoption metrics (12 months since launch):

  • 15,000+ active users across macOS, Windows, and Linux
  • 4.8/5.0 average rating on Product Hunt (850+ upvotes)
  • 2,300+ GitHub stars, featured in "Awesome Electron" list
  • 600+ community-contributed feed sources in built-in directory

User behavior changes:

  • Average reading completion rate: 68% (vs. 22% industry average)
  • Users read 3.2x more articles per week compared to web readers
  • 85% of users report "inbox zero" within 2 weeks of adoption
  • Top requested feature (offline mode) has 98% satisfaction score

Performance:

  • App starts in under 1 second on modern hardware
  • Full-text search across 10,000+ articles in under 200ms
  • Memory footprint: 120MB average (vs. 400MB+ for web-based readers)
  • Cross-platform using single codebase (Electron + React)

Technical Highlights

Offline-First Sync

// Smart sync that respects bandwidth and battery
class SyncEngine {
  async sync() {
    const feeds = await this.getFeedsToUpdate();
 
    // Parallel fetching with connection pooling
    await Promise.allSettled(
      feeds.map(feed => this.fetchFeed(feed, {
        timeout: 5000,
        maxRetries: 2,
        respectRateLimit: true
      }))
    );
  }
}

Content Extraction

Used Mozilla's Readability library with custom enhancements:

  • Remove ads and tracking scripts
  • Preserve code blocks and formatting
  • Extract featured images with fallbacks
  • Generate clean plain-text summaries for search

Tag Suggestions

Implemented TF-IDF based keyword extraction + manual override:

const topKeywords = tfidf.getTopTerms(articleContent, 5);
const manualTags = userTagMappings[feedSource] || [];
return [...new Set([...topKeywords, ...manualTags])];

Lessons Learned

  1. Offline-first is non-negotiable: Users want to read during flights, commutes, and in low-connectivity areas. Building offline-first from day one was the right call.

  2. Less is more: Early versions had too many features (social sharing, comments, highlights). Users wanted a focused reading experience. We removed 40% of features in v2.0 and satisfaction increased.

  3. Analytics build trust: Showing users their reading patterns helped them understand their information diet and motivated them to curate better feed lists.

  4. Performance matters on desktop too: Even though it's a desktop app, users notice slow startup and laggy UI. Optimizing SQLite queries and lazy-loading content was critical.

  5. Electron isn't evil: Despite the memes, Electron enabled a polished cross-platform app with a single codebase. Users care about features and UX, not bundle size debates.

Stack and Tools

  • Frontend: React 18, TypeScript, Tailwind CSS
  • Desktop: Electron with native module support
  • Database: SQLite with better-sqlite3 (10x faster than web SQL)
  • Content: Readability.js, Turndown (HTML to Markdown)
  • Search: Custom full-text search index with fuzzy matching
  • Build: Electron Builder for packaging, GitHub Actions for releases
  • Optional Sync: End-to-end encrypted cloud backup via Cloudflare Workers

Future Roadmap

  • Mobile apps: React Native version for iOS/Android
  • Browser extension: Quick-save articles from any website
  • Reading groups: Share feed lists and reading recommendations
  • AI summaries: Optional GPT-powered article summaries for long reads
  • Podcast support: Treat audio content as first-class alongside articles