RSS News Reader for Penwell house from N8N
  • JavaScript 43.7%
  • HTML 32.2%
  • CSS 21.6%
  • Shell 2%
  • Dockerfile 0.5%
Find a file
2026-02-20 06:02:14 -05:00
data moved styles to its own file and added back to top button. Default loads to today's news. 2026-02-20 06:02:14 -05:00
public moved styles to its own file and added back to top button. Default loads to today's news. 2026-02-20 06:02:14 -05:00
.gitignore Modernize RSS news viewer with Docker, archiving, and enhanced UI 2026-02-04 16:54:31 -05:00
archive-organizer.js Modernize RSS news viewer with Docker, archiving, and enhanced UI 2026-02-04 16:54:31 -05:00
ARCHIVE_ORGANIZER_EXAMPLE.md Modernize RSS news viewer with Docker, archiving, and enhanced UI 2026-02-04 16:54:31 -05:00
CHANGELOG.md Modernize RSS news viewer with Docker, archiving, and enhanced UI 2026-02-04 16:54:31 -05:00
docker-compose.yml Modernize RSS news viewer with Docker, archiving, and enhanced UI 2026-02-04 16:54:31 -05:00
docker-compose.yml.bak Modernize RSS news viewer with Docker, archiving, and enhanced UI 2026-02-04 16:54:31 -05:00
Dockerfile Modernize RSS news viewer with Docker, archiving, and enhanced UI 2026-02-04 16:54:31 -05:00
LICENSE Initial commit 2026-02-04 15:13:46 -05:00
migrate.js Modernize RSS news viewer with Docker, archiving, and enhanced UI 2026-02-04 16:54:31 -05:00
package.json Modernize RSS news viewer with Docker, archiving, and enhanced UI 2026-02-04 16:54:31 -05:00
QUICK_REFERENCE.md Modernize RSS news viewer with Docker, archiving, and enhanced UI 2026-02-04 16:54:31 -05:00
README.md Modernize RSS news viewer with Docker, archiving, and enhanced UI 2026-02-04 16:54:31 -05:00
server.js Added International News! 2026-02-17 21:12:02 -05:00
server.js.backup Initial commit - RSS News Viewer v2.0 with monthly archiving and modern UI 2026-02-04 15:24:49 -05:00
setup.sh Modernize RSS news viewer with Docker, archiving, and enhanced UI 2026-02-04 16:54:31 -05:00

RSS News Viewer - Modernized

A beautiful, Discord-style RSS news aggregator with monthly archiving, search, filtering, and modern glassmorphism design.

New Features

🗓️ Monthly Rotation

  • Automatically archives news.json at the start of each month
  • Archives stored in data/archives/news-YYYY-MM.json
  • View past months through the Archives interface

🎨 Modern Design

  • Glassmorphism card design with blur effects
  • Smooth animations and hover effects
  • Gradient accents and glowing elements
  • Animated background patterns
  • Responsive mobile-first layout

🔍 Search & Filtering

  • Real-time search across titles, content, and authors
  • Filter by news source (CBS, ABC, CBC, NBC4, Other)
  • "Show New Only" toggle for latest articles
  • Clear all filters button

📊 Statistics Dashboard

  • Total articles count
  • New articles this month
  • Current month display

📁 Archive Viewer

  • Browse historical news by month
  • View archived articles with full functionality
  • See archive metadata (date created, item count)

🚀 Quick Start

# Build and start the container
docker-compose up -d

# View logs
docker-compose logs -f

# Stop the container
docker-compose down

The app will be available at http://localhost:4000

Manual Installation

# Install dependencies
npm install

# Start the server
npm start

📂 Directory Structure

.
├── server.js              # Backend with monthly rotation
├── index.html             # Modern frontend (goes in public/)
├── dedupe-news.js         # Utility to remove duplicates
├── package.json           # Dependencies
├── Dockerfile             # Container definition
├── docker-compose.yml     # Docker orchestration
└── data/                  # Persisted data (auto-created)
    ├── news.json          # Current month's news
    ├── meta.json          # Rotation metadata
    └── archives/          # Monthly archives
        ├── news-2026-01.json
        └── news-2026-02.json

🔌 API Endpoints

Current News

  • GET /api/news - Get all current news items
  • POST /api/news - Add new news items (from n8n)
  • GET /api/health - Health check

Archives

  • GET /api/archives - List all available archives
  • GET /api/archives/:month - Get specific month's archive (e.g., 2026-01)

🎯 n8n Integration

Your existing n8n workflows will continue to work! Just POST to /api/news:

POST http://localhost:4000/api/news
Content-Type: application/json

{
  "items": [
    {
      "title": "Article Title",
      "link": "https://example.com/article",
      "content": "Article content...",
      "pubDate": "2026-02-04T12:00:00Z",
      "creator": "Author Name",
      "category": "Technology"
    }
  ]
}

🛠️ Configuration

Environment Variables

  • PORT - Server port (default: 4000)
  • TZ - Timezone for monthly rotation (default: America/New_York)

Volume Mounts

The ./data directory is mounted to persist:

  • Current news items
  • Monthly archives
  • Rotation metadata

🎨 Customization

Color Scheme

Edit CSS variables in index.html:

:root {
  --bg-primary: #0a0e1a;
  --accent-primary: #818cf8;
  --accent-secondary: #a78bfa;
  /* ... more variables ... */
}

Monthly Rotation Time

The app checks for month changes every 24 hours. It runs at startup and then daily.

🔧 Maintenance

Deduplicate News

If you have duplicate entries:

npm run dedupe

View Archives

Click the "📁 Archives" button in the UI to browse past months.

Manual Archive

Archives are created automatically, but you can manually copy data/news.json to data/archives/news-YYYY-MM.json if needed.

📱 Features in Detail

  • Case-insensitive
  • Searches title, content, and author
  • Real-time filtering

Source Filtering

  • CBS News (Blue)
  • ABC News (Orange)
  • CBC News (Cyan)
  • NBC4 (Green)
  • Other (Gray)

New Badge

  • Items marked as "NEW" in the current batch
  • Pulsing animation
  • Green gradient with glow effect
  • Cleared when new items arrive

Modal View

  • Click any card to open full article view
  • Displays full content
  • Shows all metadata
  • Large image preview
  • "Read full article" button

🐛 Troubleshooting

News not loading

  • Check docker-compose logs -f
  • Verify data/news.json exists and is valid JSON
  • Check n8n webhook is POSTing correctly

Archives not showing

  • Ensure the previous month had items
  • Check data/archives/ directory exists
  • Verify date/time is correct (check TZ env var)

Duplicates appearing

  • Run npm run dedupe
  • Check n8n workflow isn't sending duplicates
  • Verify items have unique link or guid fields

📝 License

MIT

🤝 Contributing

This is a personal project, but feel free to fork and customize!