RSS News Reader for Penwell house from N8N
- JavaScript 43.7%
- HTML 32.2%
- CSS 21.6%
- Shell 2%
- Dockerfile 0.5%
| data | ||
| public | ||
| .gitignore | ||
| archive-organizer.js | ||
| ARCHIVE_ORGANIZER_EXAMPLE.md | ||
| CHANGELOG.md | ||
| docker-compose.yml | ||
| docker-compose.yml.bak | ||
| Dockerfile | ||
| LICENSE | ||
| migrate.js | ||
| package.json | ||
| QUICK_REFERENCE.md | ||
| README.md | ||
| server.js | ||
| server.js.backup | ||
| setup.sh | ||
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
Using Docker (Recommended)
# 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 itemsPOST /api/news- Add new news items (from n8n)GET /api/health- Health check
Archives
GET /api/archives- List all available archivesGET /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
Search
- 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.jsonexists 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
linkorguidfields
📝 License
MIT
🤝 Contributing
This is a personal project, but feel free to fork and customize!