Ascolta, seguire Trump è estenuante. L'uomo domina i titoli su BBC, Guardian, NPR, Al Jazeera e persino Babylon Bee. Controllare più di 10 siti al giorno? No grazie. Così ho costruito Trump Daily! È un aggregatore RSS self-hosted che riversa tutto in un'unica interfaccia pulita. https://trumpdaily.site è nato!

E onestamente? È stato il divertimento più grande che abbia avuto programmando da mesi, qualche anno fa.

Lo Stack (Ovvero: Perché Ho Scelto Tech Noiosa)

  • Backend: Python/Flask (sì, lo adoro!)
  • Database: PostgreSQL
  • Cache: Redis (per praticamente tutto)
  • Task: Celery (fetch RSS in background)
  • Frontend: Vanilla JS (niente React, sfidatemi)
  • Deploy: Docker Compose (un comando, fatto)

Il tutto è circa 1.000 righe di Python e 400 righe di JS. Funziona in locale. Nessun tracking (Solo Google Analytics). Nessuna bolletta cloud. Nessuna cazzata.

Come Funziona

RSS Feeds → Celery → Keywords → PostgreSQL → Flask API → Browser
                         ↓
              (Divertente? Politico? Serio?)

Ogni 5 minuti, Celery recupera i feed e categorizza gli articoli usando la corrispondenza di parole chiave:

  • "investigation" + "indictment" = Serio
  • "ridiculous" + "bizarre" = Divertente
  • "tariff" + "trade war" = Economico

Regex semplice, ~85% di accuratezza. Nessun ML necessario.

Perché È Stato Ridicolmente Divertente

1. Funziona Davvero
A differenza della maggior parte dei progetti collaterali che prendono polvere, lo uso ogni mattina. Costruire qualcosa di cui hai genuinamente bisogno ha un impatto diverso.

2. Vanilla JS è Liberatorio
Niente webpack. Niente babel. Niente node_modules da 500MB. Solo 400 righe di JavaScript che si caricano istantaneamente. Il frontend filtra più di 500 articoli lato client senza problemi.

3. Docker Compose è Magia
Un solo docker compose up -d avvia 5 servizi (nginx, flask, postgres, redis, celery). Zero inferno di configurazione.

4. Python Fa il Lavoro
Progetto del weekend → Prototipo funzionante in 3 giorni. L'ecosistema (feedparser, SQLAlchemy, Celery) funziona e basta. Zero bug di libreria.

I Compromessi (Ovvero: E Se Avessi Usato Go/Rust?)

Python non è veloce. Siamo onesti:

LinguaggioParsing RSSMemoriaTempo di Sviluppo
Python15-30s~600MB3 giorni
Go3-5s~50MB5-7 giorni
Rust2-4s~30MB9-15 giorni
Node.js12-25s~500MB3 giorni
Bun5-8s~200MB3 giorni

Go potrebbe fare il parsing dei feed 10x più veloce? Sì.
Importerebbe? Assolutamente no.

L'app sembra già istantanea. RSS si aggiorna ogni 5 minuti. A chi importa se l'ingestione richiede 15 secondi invece di 3? Non sto gestendo Twitter qui.

Quando Sceglierei Diversamente

  • 10.000 utenti simultanei? Go o Rust.
  • WebSocket in tempo reale? Elixir/Phoenix.
  • VPS da $5/mese? Go (meno memoria).
  • Conosci già Rust? Usa ciò che conosci.

Ma per uno strumento single-user, self-hosted? Python è perfetto.

Migliori Decisioni

- Filtraggio lato client - Carica tutti i 500 articoli, filtra nel browser. Veloce e semplice.
- Docker Compose - Niente complessità Kubernetes per un progetto personale.
- Niente framework - Vanilla JS si carica in millisecondi, nessun passaggio di build.
- PostgreSQL - Indici appropriati, niente drammi di locking di SQLite.
- Privacy-first - Funziona in locale, zero tracking, zero cloud.

Peggiori Decisioni

- Nessuna ricerca full-text - LIKE di PostgreSQL è basilare, ma sufficiente.
- Nessun aggiornamento in tempo reale - Gli articoli si aggiornano ogni 5 min, non in diretta.
- Uso della memoria - 600MB è eccessivo per questo, ma a chi importa.

Vuoi Contribuire?

Il repo è privato su GitHub, ma sono felice di aggiungere collaboratori. Se vuoi:

  • Esplorare il codice
  • Contribuire con funzionalità
  • Forkarlo per il tuo aggregatore

Semplicemente inviami il tuo username GitHub o il tuo indirizzo email. L'ho tenuto privato per evitare spam, ma adoro la collaborazione.

Lezioni Apprese

  1. La tech noiosa vince - Flask, PostgreSQL, Redis sono noiosi. Sono anche testati in battaglia e prevedibili.
  2. Il rendering lato client è sottovalutato - I browser moderni sono veloci. Usali.
  3. Docker Compose > Kubernetes - Per piccoli progetti, K8s è una follia.
  4. Vanilla JS è sufficiente - React/Vue sono ottimi, ma complessità non necessaria per UI semplici.
  5. RSS non è morto - Semplice, standardizzato, nessuna chiave API, funziona e basta.

Il Verdetto

Python era assolutamente la scelta giusta. Non perché sia veloce (non lo è), ma perché:

  • Ho rilasciato in 3 ore con Github Co-Pilot
  • Il codice è leggibile
  • Le prestazioni sono "abbastanza buone"
  • Mi diverto davvero a mantenerlo

Go potrebbe essere 10x più veloce? Certo. Importerebbe? No.

Scegli strumenti che ti permettano di rilasciare velocemente, risolvere il problema e non fare over-engineering.


Tech: Python, Flask, PostgreSQL, Redis, Celery, Vanilla JS
Righe di Codice: ~1.400 totali
Tempo di Sviluppo: 3 ore con Github Co-Pilot
Deploy: docker compose up -d
Stato: Repo privato, collaboratori benvenuti

2026. Costruito, rilasciato, lo uso ogni giorno. Così dovrebbero sentirsi i progetti collaterali.