I Built TrumpDaily to Track Donald Trump Without the Noise

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:

LanguageRSS ParsingMemoryDev Time
Python15-30s~600MB3 days
Go3-5s~50MB5-7 days
Rust2-4s~30MB9-15 days
Node.js12-25s~500MB3 days
Bun5-8s~200MB3 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

  1. Boring tech wins – Flask, PostgreSQL, Redis are boring. They’re also battle-tested and predictable.
  2. Client-side rendering is underrated – Modern browsers are fast. Use them.
  3. Docker Compose > Kubernetes – For small projects, K8s is insane overkill.
  4. Vanilla JS is enough – React/Vue are great, but unnecessary complexity for simple UIs.
  5. 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.