Combine multiple RSS feeds into one unified feed https://rss4.paulg.it
  • TypeScript 95.6%
  • Dockerfile 2.3%
  • CSS 1.4%
  • JavaScript 0.6%
Find a file
Paul Git e3e817773a
All checks were successful
Docker Publish / Lint, Test & Audit (push) Successful in 38s
Docker Publish / Build, Scan & Push (push) Successful in 5m31s
Docker Publish / Notify (push) Successful in 6s
0.2.3
2026-06-09 20:21:40 +07:00
.forgejo/workflows Apply CI hardening standard 2026-06-07 15:01:36 +07:00
public Tweak copy for Safari-specific lowercase bug; clean up some metadata (#10) 2025-07-07 10:25:25 -04:00
src Fix Docker HEALTHCHECK for distroless image 2026-06-09 20:21:11 +07:00
.dockerignore Added Dockerfile and modified to work with Docker 2026-02-08 05:13:19 +08:00
.gitignore Add release workflow and CLAUDE.md docs 2026-06-04 13:58:44 +07:00
AGENTS.md Apply CI hardening standard 2026-06-07 15:01:36 +07:00
biome.json Tweak copy for Safari-specific lowercase bug; clean up some metadata (#10) 2025-07-07 10:25:25 -04:00
bun.lock Fix CI lint step for Next.js 16 2026-06-07 15:53:45 +07:00
CLAUDE.md Prefer fj CLI over Forgejo MCP for remote operations 2026-06-04 14:23:56 +07:00
Dockerfile Fix Docker HEALTHCHECK for distroless image 2026-06-09 20:21:11 +07:00
eslint.config.mjs Fix CI lint step for Next.js 16 2026-06-07 15:53:45 +07:00
justfile Clean up some dead code; add justfile 2025-07-06 11:33:02 -04:00
mise.toml Fix bug with punctuation (#12) 2025-10-02 11:16:06 -04:00
next-env.d.ts bug: fix handling of xml elements with attributes (#26) 2026-01-16 17:43:26 -05:00
next.config.ts Added Dockerfile and modified to work with Docker 2026-02-08 05:13:19 +08:00
package.json 0.2.3 2026-06-09 20:21:40 +07:00
postcss.config.mjs Chore work 2025-06-10 21:43:46 -04:00
README.md Update README to reflect current features and CI/CD setup 2026-06-06 20:34:45 +07:00
tsconfig.json bug: fix handling of xml elements with attributes (#26) 2026-01-16 17:43:26 -05:00
vercel.json Chore work 2025-06-10 21:43:46 -04:00

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