Look, tracking Trump is exhausting. The man dominates headlines across BBC, Guardian, NPR, Al Jazeera, and even Babylon Bee. Checking 10+ sites daily? No thanks. So I built Trump Daily! It’s a self-hosted RSS aggregator that dumps everything into one clean interface. https://trumpdaily.site was born!
And honestly? This was the most fun I’ve had coding in months a few years ago.
The Stack (Or: Why I Chose Boring Tech)
- Backend: Python/Flask (yes, I love it!)
- Database: PostgreSQL
- Cache: Redis (for literally everything)
- Tasks: Celery (background RSS fetching)
- Frontend: Vanilla JS (no React, fight me)
- Deploy: Docker Compose (one command, done)
The whole thing is ~1,000 lines of Python and 400 lines of JS. Runs locally. No tracking (Just Google Analytics). No cloud bills. No bullshit.
How It Works
RSS Feeds → Celery → Keywords → PostgreSQL → Flask API → Browser
↓
(Funny? Political? Serious?)
Every 5 minutes, Celery fetches feeds and categorizes articles using keyword matching:
- “investigation” + “indictment” = Serious
- “ridiculous” + “bizarre” = Funny
- “tariff” + “trade war” = Economic
Simple regex, ~85% accuracy. No ML needed.
Why This Was Ridiculously Fun
1. It Actually Works
Unlike most side projects that collect dust, I use this every morning. Building something you genuinely need hits different.
2. Vanilla JS is Liberating
No webpack. No babel. No 500MB node_modules. Just 400 lines of JavaScript that load instantly. The frontend filters 500+ articles client-side without breaking a sweat.
3. Docker Compose is Magic
One docker compose up -d spins up 5 services (nginx, flask, postgres, redis, celery). Zero configuration hell.
4. Python Gets Shit Done
Weekend project → Working prototype in 3 days. The ecosystem (feedparser, SQLAlchemy, Celery) just works. Zero library bugs.
The Trade-Offs (Or: What If I Used Go/Rust?)
Python’s not fast. Let’s be real:
| Language | RSS Parsing | Memory | Dev Time |
|---|---|---|---|
| Python | 15-30s | ~600MB | 3 days |
| Go | 3-5s | ~50MB | 5-7 days |
| Rust | 2-4s | ~30MB | 9-15 days |
| Node.js | 12-25s | ~500MB | 3 days |
| Bun | 5-8s | ~200MB | 3 days |
Could Go parse feeds 10x faster? Yes.
Would it matter? Hell no.
The app already feels instant. RSS updates every 5 minutes. Who cares if ingestion takes 15 seconds vs 3 seconds? I’m not running Twitter here.
When I’d Choose Differently
- 10,000 concurrent users? Go or Rust.
- Real-time WebSockets? Elixir/Phoenix.
- $5/month VPS? Go (lower memory).
- Already know Rust? Use what you know.
But for a single-user, self-hosted tool? Python is perfect.
Best Decisions
– Client-side filtering – Load all 500 articles, filter in browser. Fast and simple.
– Docker Compose – No Kubernetes complexity for a personal project.
– No frameworks – Vanilla JS loads in milliseconds, no build step.
– PostgreSQL – Proper indexes, no SQLite locking drama.
– Privacy-first – Runs locally, zero tracking, zero cloud.
Worst Decisions
– No full-text search – PostgreSQL LIKE is basic, but good enough.
– No real-time updates – Articles refresh every 5 min, not live.
– Memory usage – 600MB is overkill for this, but who cares.
Want to Contribute?
The repo is private on GitHub, but I’m happy to add collaborators. If you want to:
- Explore the code
- Contribute features
- Fork it for your own aggregator
Just send me your GitHub username or your email address. I kept it private to avoid spam, but I love collaboration.
Lessons Learned
- Boring tech wins – Flask, PostgreSQL, Redis are boring. They’re also battle-tested and predictable.
- Client-side rendering is underrated – Modern browsers are fast. Use them.
- Docker Compose > Kubernetes – For small projects, K8s is insane overkill.
- Vanilla JS is enough – React/Vue are great, but unnecessary complexity for simple UIs.
- RSS isn’t dead – Simple, standardized, no API keys, just works.
The Verdict
Python was absolutely the right choice. Not because it’s fast (it’s not), but because:
- I shipped in 3 hours with Github Co-Pilot
- The code is readable
- Performance is “good enough”
- I actually enjoy maintaining it
Could Go be 10x faster? Sure. Would it matter? Nope.
Pick tools that let you ship fast, solve the problem, and don’t over-engineer.
Tech: Python, Flask, PostgreSQL, Redis, Celery, Vanilla JS
Lines of Code: ~1,400 total
Dev Time: 3 hour with Github Co-Pilot
Deploy: docker compose up -d
Status: Private repo, collaborators welcome
2026. Built it, shipped it, use it daily. This is how side projects should feel.
