An open API service indexing awesome lists of open source software.

https://github.com/moikapy/rss

My RSS Feed, How I Stay Up to date with AI
https://github.com/moikapy/rss

Last synced: 2 months ago
JSON representation

My RSS Feed, How I Stay Up to date with AI

Awesome Lists containing this project

README

          

# ๐Ÿ‰ 0xRSS

A privacy-first, edge-deployed RSS feed aggregator โ€” your corner of the internet, curated by you.

**Live at [rss.moikapy.dev](https://rss.moikapy.dev)** ยท Installable PWA ยท Works offline

## Why 0xRSS?

The internet is noisy. 0xRSS gives you one quiet place to read what matters โ€” no algorithm, no ads, no tracking. Just feeds, folders, and full-text articles.

## Features

- **๐Ÿ“ฐ Smart Feed Aggregation** โ€” 54+ curated feeds across AI, Gaming, Tech, News, Pop Culture, and Anime
- **๐Ÿ“– Full Content Extraction** โ€” Mozilla Readability renders full articles inline, no tab-switching
- **๐Ÿ“‚ Folders + Tags** โ€” Organize feeds your way, filter across feeds
- **โœ… Full Triage** โ€” Read/unread, bookmarks, read-later queue
- **๐Ÿ” Full-Text Search** โ€” FTS5 in SQLite, LIKE fallback for D1
- **๐Ÿ“ฅ OPML Import/Export** โ€” Standard RSS subscription format
- **๐Ÿ”„ Auto-Refresh** โ€” Configurable per-feed intervals, Cloudflare Queue-powered fetching
- **๐ŸŒ™ Dark Mode** โ€” System/light/dark themes
- **โŒจ๏ธ Keyboard Shortcuts** โ€” j/k navigate, s bookmark, l read later, r read/unread, โŒ˜\ toggle sidebar
- **๐Ÿ–ฅ๏ธ 3-Panel Layout** โ€” Resizable sidebar, article list, reader
- **๐Ÿ“ฑ PWA** โ€” Install on any device, works offline, app shell cached
- **๐Ÿ”‘ Nostr Login** โ€” NIP-07 browser extension auth for passwordless login
- **๐Ÿค– AI Chat** โ€” Ollama-powered chat about your feeds and articles

## Architecture

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ Next.js 16 PWA โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚ Hono API Worker โ”‚โ”€โ”€โ”€โ”€โ–ถโ”‚ Cloudflare โ”‚
โ”‚ (Cloudflare โ”‚ โ”‚ api.rss.moikapy โ”‚ โ”‚ D1 + KV โ”‚
โ”‚ Workers) โ”‚ โ”‚ .dev โ”‚ โ”‚ + Queues โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

**Three-tier API:**
| Tier | Path | Auth | Cache |
|---|---|---|---|
| Public | `/api/public/*` | None | KV stale-while-revalidate |
| User | `/api/user/*` | Any JWT | No-store |
| Admin | `/api/admin/*` | Admin JWT | No-store |

## Tech Stack

| Component | Technology |
|---|---|
| Frontend | Next.js 16 (App Router) + Tailwind CSS 4 |
| API | Hono on Cloudflare Workers |
| Database | Cloudflare D1 (prod) / SQLite (dev) |
| ORM | Drizzle ORM |
| Auth | JWT via jose + PBKDF2 (Web Crypto) |
| Caching | Cloudflare KV |
| Feed Processing | Cloudflare Queues |
| AI | Ollama Cloud |
| Nostr | NIP-07 browser extension |
| Deploy | Cloudflare Workers + OpenNext |

## Quick Start

```bash
# Clone and install
git clone https://github.com/Moikapy/rss.git
cd rss
bun install

# Set up environment
cp .env.example .env.local
# Edit .env.local with your JWT_SECRET

# Run development server
bun run dev

# Open http://localhost:3000
# First visit prompts account creation
```

## Development

```bash
bun run dev # Web dev server
bun run build # Build Next.js
bun run db:push # Push schema to DB
```

### API Worker (local)

```bash
cd packages/0xrss-api

# Create .dev.vars with JWT_SECRET
cp .dev.vars.example .dev.vars

# Run with local D1
npx wrangler dev
```

## Deployment

### Frontend (Cloudflare Workers via OpenNext)

```bash
# Build and deploy
npx opennextjs-cloudflare build
npx opennextjs-cloudflare deploy
```

### API Worker

```bash
cd packages/0xrss-api

# Create D1 database
npx wrangler d1 create 0xrss-db
# Update wrangler.toml with the database_id

# Apply migrations
npx wrangler d1 migrations apply 0xrss-db --remote

# Set secrets
npx wrangler secret put JWT_SECRET

# Deploy
npx wrangler deploy
```

### Custom Domain Setup

1. Frontend: `rss.moikapy.dev` โ†’ Cloudflare Worker `0xrss`
2. API: `api.rss.moikapy.dev` โ†’ Cloudflare Worker `0xrss-api`
3. Set `NEXT_PUBLIC_API_URL=https://api.rss.moikapy.dev` in `.env.production`

## PWA Support

0xRSS is a Progressive Web App:

- **Installable** โ€” Add to home screen on iOS/Android/desktop
- **Offline-capable** โ€” Service worker caches app shell and API responses
- **App-like** โ€” Standalone display mode, no browser chrome
- **Theme-aware** โ€” Matches system dark/light mode

The service worker uses a **network-first strategy** for API calls (fresh data with offline fallback) and **cache-first** for static assets.

## Keyboard Shortcuts

| Key | Action |
|---|---|
| `j` / `โ†“` | Next article |
| `k` / `โ†‘` | Previous article |
| `s` | Toggle bookmark |
| `l` | Toggle read later |
| `r` | Toggle read/unread |
| `โ‡งR` | Refresh all feeds |
| `โŒ˜\` | Toggle sidebar |

## Seeded Content

The app comes pre-loaded with 54 curated feeds across 6 folders:

| Folder | Feeds | Highlights |
|---|---|---|
| ๐Ÿง  AI | 17 | OpenAI, Google AI, HuggingFace, arXiv cs.AI, Anthropic, Claude, LangChain, Simon Willison, VentureBeat AI |
| ๐ŸŽฎ Gaming | 8 | IGN, Kotaku, Polygon, PC Gamer, Eurogamer, Rock Paper Shotgun, Game Developer |
| ๐Ÿ’ป Technology | 9 | Ars Technica, The Verge, TechCrunch, Wired, Hacker News, MIT Tech Review, Engadget |
| ๐Ÿ“ฐ News | 7 | BBC, The Guardian, NPR, AP News, Reuters, NYT |
| ๐ŸŽญ Pop Culture | 7 | Vulture, A.V. Club, Pitchfork, Billboard, Variety, Hollywood Reporter |
| ๐Ÿ“บ Anime | 6 | Anime News Network, Crunchyroll, MyAnimeList, MangaUpdates |

## Project Structure

```
โ”œโ”€โ”€ src/ # Next.js frontend
โ”‚ โ”œโ”€โ”€ app/ # App Router pages
โ”‚ โ”œโ”€โ”€ components/ # React components
โ”‚ โ”‚ โ”œโ”€โ”€ article/ # Article list + reader
โ”‚ โ”‚ โ”œโ”€โ”€ chat/ # AI chat panel
โ”‚ โ”‚ โ”œโ”€โ”€ feed/ # Feed management
โ”‚ โ”‚ โ”œโ”€โ”€ layout/ # Sidebar + header
โ”‚ โ”‚ โ””โ”€โ”€ providers/ # Auth, theme, SW providers
โ”‚ โ”œโ”€โ”€ lib/ # API client, auth, parsers
โ”‚ โ””โ”€โ”€ hooks/ # Custom React hooks
โ”œโ”€โ”€ packages/0xrss-api/ # Hono API Worker
โ”‚ โ”œโ”€โ”€ src/
โ”‚ โ”‚ โ”œโ”€โ”€ routes/ # Public, admin, user, auth routes
โ”‚ โ”‚ โ”œโ”€โ”€ middleware/ # Cache, auth, rate-limit
โ”‚ โ”‚ โ”œโ”€โ”€ db/ # Drizzle schema + client
โ”‚ โ”‚ โ””โ”€โ”€ lib/ # Feed processor, password hashing, Nostr
โ”‚ โ””โ”€โ”€ wrangler.toml # Worker config
โ”œโ”€โ”€ public/ # Static assets + PWA files
โ”‚ โ”œโ”€โ”€ manifest.webmanifest
โ”‚ โ”œโ”€โ”€ sw.js
โ”‚ โ”œโ”€โ”€ icon-192.png
โ”‚ โ”œโ”€โ”€ icon-512.png
โ”‚ โ””โ”€โ”€ apple-touch-icon.png
โ””โ”€โ”€ wrangler.toml # Frontend Worker config
```

## License

MIT