AI-powered RSS feed aggregator that summarizes articles using Poolside Laguna models (recommended) or Claude, rates them by importance, and helps you stay informed without the noise.
- AI Summarization: Auto-summarize articles with Poolside Laguna models (recommended) or Anthropic Claude
- Importance Scoring: Articles rated 1-5 based on your interests
- Smart Organization: Save for later, archive, mark as read
- Topic Detection: Auto-categorize with normalized broad topics
- Intelligent Filtering: By importance, topic, feed, read/saved/archived status
- Background Processing: Temporal workflows poll feeds and process articles automatically
- Docker & Docker Compose
- Go 1.26+ and Node.js 20+ (for local development)
- Poolside API key (get one here) - Recommended for best performance
- (Alternative) Anthropic API key (get one here)
# 1. Clone repo
git clone <repo-url>
cd rss-summarizer
# 2. Configure backend
cp backend/.env.example backend/.env
# Edit backend/.env and add your API key:
# Option A (Recommended): Poolside API key (better performance)
# LLM_API_KEY=ps-your-key-here
# LLM_MODEL=poolside/laguna-m.1
# Provider: Set to "poolside" in admin UI
# Option B: Anthropic API key
# LLM_API_KEY=sk-ant-api03-your-key-here
# LLM_MODEL=claude-3-5-sonnet-20241022
# 3. Start everything
make startThat's it! Open http://localhost:5173
The make start command:
- Starts PostgreSQL + Temporal (Docker)
- Runs database migrations
- Starts backend API (port 8080)
- Starts frontend dev server (port 5173)
# Daily workflow
make start # Start everything
make stop # Stop all services
# Run components separately
make dev-backend # Backend only (requires Docker running)
make dev-frontend # Frontend only (requires backend)
# Testing
make test # Run all tests
# Database
make migrate-up # Apply migrations
make migrate-down # Rollback last migration
# Other
make help # Show all commandsBackend: Go, PostgreSQL, Temporal, Huma v2 (OpenAPI auto-generation) Frontend: SvelteKit, Svelte 5, TypeScript, Tailwind CSS AI: Poolside Laguna models (recommended) or Anthropic Claude API
rss-summarizer/
├── backend/
│ ├── cmd/api/ # Entry point
│ ├── internal/
│ │ ├── api/ # HTTP handlers (Huma)
│ │ ├── domain/ # Business models
│ │ ├── repository/ # Data access (Postgres)
│ │ ├── service/ # LLM, RSS, scraper
│ │ └── workflow/ # Temporal workflows
│ ├── migrations/ # SQL migrations
│ └── CLAUDE.md # Backend dev guide
├── frontend/
│ ├── src/
│ │ ├── lib/ # Components, stores, API client
│ │ └── routes/ # SvelteKit pages
│ └── CLAUDE.md # Frontend dev guide
├── prd.md # Product requirements
└── Makefile # Unified commands
- Articles are global (shared across users)
- User state is per-user:
is_read- Track what you've readis_saved- Save for later readingis_archived- Archive to remove from main view
- Auto-detected by LLM and normalized to broad categories (e.g., "Go", "Security", "AI")
- Set preferences per topic: "High Interest", "Normal", or "Hide"
- Topics are global, preferences are per-user
- Frontend TypeScript client auto-generated from backend OpenAPI spec
- Backend changes → Regenerate client:
npm run generate:api(from frontend dir) - See
frontend/CLAUDE.mdfor details
Backend (backend/.env):
DATABASE_URL=postgres://rss_user:rss_pass@localhost:5432/rss_summarizer?sslmode=disable
# Option 1 (Recommended): Poolside API key
# Get from https://platform.poolside.ai/
LLM_API_KEY=ps-your-key-here
LLM_MODEL=poolside/laguna-m.1
# Option 2: Anthropic API key
# Get from https://console.anthropic.com/
# LLM_API_KEY=sk-ant-api03-your-key-here
# LLM_MODEL=claude-3-5-sonnet-20241022Frontend (frontend/.env - optional):
VITE_API_URL=http://localhost:8080 # Defaults to localhost:8080Set DEV_MODE=true in backend .env to bypass authentication (default user created automatically).
After initial setup, configure your preferred LLM provider in the admin UI:
- Go to Admin → LLM Configuration in the web UI
- Select your provider:
- Poolside (Laguna models) - Recommended for best performance
- Anthropic - Claude models
- OpenAI - GPT models
- Enter the model name and API key
- For Poolside: Use
poolside/laguna-m.1orpoolside/laguna-xs
- prd.md - Full product requirements and features
- backend/CLAUDE.md - Backend development guide (testing, API, workflows)
- frontend/CLAUDE.md - Frontend development guide (API generation, stores, components)
Once running, visit:
- OpenAPI spec: http://localhost:8080/openapi.json
- Temporal UI: http://localhost:8233
Frontend build fails with "Cannot fetch OpenAPI spec":
- Ensure backend is running:
make dev-backend - Manually generate API client:
cd frontend && npm run generate:api
Database connection errors:
- Check Docker is running:
docker ps - Restart services:
make docker-down && make docker-up
Temporal workflows not running:
- Check Temporal UI: http://localhost:8233
- Ensure worker is running (part of backend)
MIT