Κοίτα, το να παρακολουθείς τον Trump είναι εξαντλητικό. Ο άνθρωπος κυριαρχεί στα headlines των BBC, Guardian, NPR, Al Jazeera, ακόμα και του Babylon Bee. Να ελέγχω 10+ sites καθημερινά; Όχι, ευχαριστώ. Έτσι έφτιαξα το Trump Daily! Είναι ένας self-hosted RSS aggregator που τα συγκεντρώνει όλα σε ένα καθαρό interface. Το https://trumpdaily.site γεννήθηκε!

Και ειλικρινά; Ήταν το πιο διασκεδαστικό coding που έχω κάνει εδώ και μήνες.

Το Stack (Ή: Γιατί Επέλεξα Βαρετή Τεχνολογία)

  • Backend: Python/Flask (ναι, το λατρεύω!)
  • Database: PostgreSQL
  • Cache: Redis (για κυριολεκτικά τα πάντα)
  • Tasks: Celery (background RSS fetching)
  • Frontend: Vanilla JS (όχι React, διαφωνήστε)
  • Deploy: Docker Compose (μία εντολή, τελείωσες)

Το όλο πράγμα είναι ~1.000 γραμμές Python και 400 γραμμές JS. Τρέχει τοπικά. Χωρίς tracking (Μόνο Google Analytics). Χωρίς cloud λογαριασμούς. Χωρίς ανοησίες.

Πώς Λειτουργεί

RSS Feeds → Celery → Keywords → PostgreSQL → Flask API → Browser
                         ↓
              (Αστείο; Πολιτικό; Σοβαρό;)

Κάθε 5 λεπτά, το Celery ανακτά feeds και κατηγοριοποιεί άρθρα χρησιμοποιώντας keyword matching:

  • "investigation" + "indictment" = Σοβαρό
  • "ridiculous" + "bizarre" = Αστείο
  • "tariff" + "trade war" = Οικονομικό

Απλό regex, ~85% ακρίβεια. Δεν χρειάζεται ML.

Γιατί Αυτό Ήταν Γελοία Διασκεδαστικό

1. Πραγματικά Λειτουργεί
Σε αντίθεση με τα περισσότερα side projects που μαζεύουν σκόνη, το χρησιμοποιώ κάθε πρωί. Το να φτιάχνεις κάτι που πραγματικά χρειάζεσαι είναι διαφορετική αίσθηση.

2. Η Vanilla JS Είναι Απελευθερωτική
Χωρίς webpack. Χωρίς babel. Χωρίς 500MB node_modules. Μόνο 400 γραμμές JavaScript που φορτώνουν άμεσα. Το frontend φιλτράρει 500+ άρθρα client-side χωρίς κανένα πρόβλημα.

3. Το Docker Compose Είναι Μαγεία
Ένα docker compose up -d σηκώνει 5 υπηρεσίες (nginx, flask, postgres, redis, celery). Μηδέν configuration κόλαση.

4. Η Python Κάνει τη Δουλειά
Weekend project → Λειτουργικό πρωτότυπο σε 3 ημέρες. Το οικοσύστημα (feedparser, SQLAlchemy, Celery) απλά δουλεύει. Μηδέν library bugs.

Τα Trade-Offs (Ή: Τι θα γινόταν αν χρησιμοποιούσα Go/Rust;)

Η Python δεν είναι γρήγορη. Ας είμαστε ειλικρινείς:

ΓλώσσαRSS ParsingΜνήμηΧρόνος Ανάπτυξης
Python15-30s~600MB3 ημέρες
Go3-5s~50MB5-7 ημέρες
Rust2-4s~30MB9-15 ημέρες
Node.js12-25s~500MB3 ημέρες
Bun5-8s~200MB3 ημέρες

Θα μπορούσε η Go να κάνει parsing τα feeds 10x πιο γρήγορα; Ναι.
Θα είχε σημασία; Καμία απολύτως.

Η εφαρμογή ήδη φαίνεται άμεση. Το RSS ενημερώνεται κάθε 5 λεπτά. Ποιός νοιάζεται αν το ingestion παίρνει 15 δευτερόλεπτα αντί για 3; Δεν τρέχω το Twitter εδώ.

Πότε θα Επέλεγα Διαφορετικά

  • 10.000 ταυτόχρονοι χρήστες; Go ή Rust.
  • Real-time WebSockets; Elixir/Phoenix.
  • $5/μήνα VPS; Go (χαμηλότερη μνήμη).
  • Ξέρεις ήδη Rust; Χρησιμοποίησε αυτό που ξέρεις.

Αλλά για ένα single-user, self-hosted εργαλείο; Η Python είναι τέλεια.

Καλύτερες Αποφάσεις

- Client-side filtering - Φόρτωσε και τα 500 άρθρα, φιλτράρισμα στον browser. Γρήγορο και απλό.
- Docker Compose - Χωρίς πολυπλοκότητα Kubernetes για ένα προσωπικό project.
- Χωρίς frameworks - Η Vanilla JS φορτώνει σε milliseconds, χωρίς build step.
- PostgreSQL - Proper indexes, χωρίς SQLite locking drama.
- Privacy-first - Τρέχει τοπικά, μηδέν tracking, μηδέν cloud.

Χειρότερες Αποφάσεις

- Χωρίς full-text search - Το PostgreSQL LIKE είναι βασικό, αλλά αρκετά καλό.
- Χωρίς real-time updates - Τα άρθρα ανανεώνονται κάθε 5 λεπτά, όχι ζωντανά.
- Χρήση μνήμης - 600MB είναι υπερβολικό για αυτό, αλλά ποιος νοιάζεται.

Θέλεις να Συνεισφέρεις;

Το repo είναι ιδιωτικό στο GitHub, αλλά είμαι πρόθυμος να προσθέσω συνεργάτες. Αν θέλεις να:

  • Εξερευνήσεις τον κώδικα
  • Συνεισφέρεις features
  • Το κάνεις fork για τον δικό σου aggregator

Απλά στείλε μου το GitHub username ή τη διεύθυνση email σου. Το κράτησα ιδιωτικό για να αποφύγω το spam, αλλά λατρεύω τη συνεργασία.

Μαθήματα που Πήρα

  1. Η βαρετή τεχνολογία κερδίζει - Flask, PostgreSQL, Redis είναι βαρετά. Είναι επίσης battle-tested και προβλέψιμα.
  2. Το client-side rendering είναι υποτιμημένο - Οι σύγχρονοι browsers είναι γρήγοροι. Χρησιμοποίησέ τους.
  3. Docker Compose > Kubernetes - Για μικρά projects, το K8s είναι τρελό overkill.
  4. Η Vanilla JS είναι αρκετή - React/Vue είναι υπέροχα, αλλά περιττή πολυπλοκότητα για απλά UIs.
  5. Το RSS δεν είναι νεκρό - Απλό, τυποποιημένο, χωρίς API keys, απλά δουλεύει.

Η Ετυμηγορία

Η Python ήταν απόλυτα η σωστή επιλογή. Όχι επειδή είναι γρήγορη (δεν είναι), αλλά επειδή:

  • Έκανα deploy σε 3 ώρες με το Github Co-Pilot
  • Ο κώδικας είναι ευανάγνωστος
  • Η απόδοση είναι "αρκετά καλή"
  • Πραγματικά απολαμβάνω να το συντηρώ

Θα μπορούσε η Go να είναι 10x πιο γρήγορη; Σίγουρα. Θα είχε σημασία; Όχι.

Επίλεξε εργαλεία που σε αφήνουν να κάνεις deploy γρήγορα, να λύσεις το πρόβλημα και να μην κάνεις over-engineer.


Tech: Python, Flask, PostgreSQL, Redis, Celery, Vanilla JS
Γραμμές Κώδικα: ~1.400 συνολικά
Χρόνος Ανάπτυξης: 3 ώρες με Github Co-Pilot
Deploy: docker compose up -d
Κατάσταση: Ιδιωτικό repo, συνεργάτες ευπρόσδεκτοι

2026. Το έφτιαξα, το έκανα deploy, το χρησιμοποιώ καθημερινά. Έτσι πρέπει να είναι τα side projects.