Combine multiple RSS feeds into one unified feed
https://rss4.paulg.it
- TypeScript 95.6%
- Dockerfile 2.3%
- CSS 1.4%
- JavaScript 0.6%
| .forgejo/workflows | ||
| public | ||
| src | ||
| .dockerignore | ||
| .gitignore | ||
| AGENTS.md | ||
| biome.json | ||
| bun.lock | ||
| CLAUDE.md | ||
| Dockerfile | ||
| eslint.config.mjs | ||
| justfile | ||
| mise.toml | ||
| next-env.d.ts | ||
| next.config.ts | ||
| package.json | ||
| postcss.config.mjs | ||
| README.md | ||
| tsconfig.json | ||
| vercel.json | ||
rssrssrssrss
A simple, stateless SPA that allows users to combine multiple RSS feeds into a single RSS feed URL.
Features
- Combine any number of RSS, Atom, or JSON feeds into a single feed
- Automatic feed discovery — paste any website URL and the app will find its feed
- Output as RSS 2.0 or JSON Feed 1.1 (
?format=json) - Simple, intuitive interface
- No account required - just enter your feeds and get a URL
- Combined feeds are sorted by date (newest first)
- Original source information is preserved in the merged feed
- RSS feeds are compressed using LZ-string for better compression, and then translated into a URI-friendly alphabet space
Development
Prerequisites
- Bun 1.0+
Setup
# Clone the repository
git clone https://code.paulg.it/paulgit/rssrssrssrss.git
cd rssrssrssrss
# Install dependencies
bun install
# Run the development server
bun dev
Open http://localhost:3030 with your browser to see the result.
Available Scripts
bun dev # Start development server
bun build # Build for production
bun start # Start production server
bun run lint # Run linter
bun run format # Format and auto-fix code with Biome
Docker
The production image is built on Google Distroless (gcr.io/distroless/nodejs24-debian13:nonroot) for a minimal attack surface—no shell, package manager, npm, npx, or corepack. The image runs as UID 65532 (nonroot).
CI/CD
Images are built and published automatically via Forgejo Actions:
| Trigger | Image tag |
|---|---|
Push a v*.*.* tag |
<version> + latest |
| Manual dispatch | dev-<commit-sha> |
Trivy scans for HIGH/CRITICAL fixable vulnerabilities before every push. Builds are blocked if any are found.
Tech Stack
- Next.js 16 with React 19
- TypeScript
- Tailwind CSS 4
- Biome for formatting; ESLint (via Next.js) for linting
- Bun for package management, runtime, and testing
- Docker with distroless Node.js 24 for production images