Project

Optio News

April 1, 2026

pythonflaskjavascriptrssautomationweb-developmentartificial-intelligencefull-stack
optio.news/
Optio News

Optio News is live at optio.news — a full-stack personalized news platform built from scratch.

Optio News dashboard — personalized feed with trending sidebar and breaking news ticker

Article feed cards with category filters, Top Stories, and live article count

Bookmarks page — save and categorize articles across sessions

Overview

Most news apps show you what they think you should read. Optio flips that: you pick your sources, you own your feed. I designed and shipped Optio News as a production full-stack web application that aggregates RSS feeds from 70+ curated sources across nine categories, surfaces trending topics algorithmically, and delivers daily email digests — all without reaching for a framework or a managed backend.

This is the kind of project I’m most proud of: a real product, deployed and working, touching every layer of the stack with zero shortcuts.

View Source on GitHub · Live at optio.news


What It Does

Users authenticate, then build a personalized dashboard by selecting from a library of RSS sources. The app fetches, caches, and displays articles in real time. A trending topics engine analyzes the past 24 hours of content across all feeds and extracts the phrases gaining the most traction — not just individual keywords, but 2–3 word phrases, filtered against a 200+ word stopword list to surface signal over noise.

At a configured time each day, the app composes and sends an HTML-formatted email digest to each user summarizing their feeds. The whole system runs on a scheduler that handles feed refreshes, cache expiry, and email delivery without any managed infrastructure.


Core Features

Personalized Feed Dashboard

  • 70+ curated RSS sources across technology, finance, sports, science, business, entertainment, music, and health
  • 27+ additional user-addable feeds beyond the defaults
  • Feed hiding (temporary suppression without permanent deletion) for flexible curation
  • Real-time client-side article search across the current feed view
  • Analyzes articles published in the past 24 hours across all active feeds
  • Keyword frequency analysis with 2–3 word phrase detection
  • Filters results against a 200+ word stopword list to eliminate noise
  • Surfaces genuinely trending topics, not just high-frequency words

Daily Email Digests

  • HTML-formatted digest emails composed and sent automatically via smtplib
  • User-configurable delivery time
  • Covers all of the user’s active feeds in a clean, scannable layout

Technical Infrastructure

  • 30-minute article cache balancing freshness with server load
  • Cross-platform scheduling via Windows Task Scheduler or Linux cron
  • Authentication system with login and registration flows
  • Dark/light theme toggle that persists across sessions and through the auth flow

Tech Stack

LayerTechnology
BackendPython 3.8+ / Flask
FrontendVanilla JavaScript, HTML5, CSS3
RSS Parsingfeedparser
Email Deliverysmtplib with HTML templates
Schedulingschedule library
Icons / FontsFont Awesome 6, Google Fonts (Inter)

No heavy framework dependencies. Full ownership of every layer: routing, feed logic, caching, email templating, scheduling, theming, and client-side interactivity — all in a single cohesive codebase.


Why It Stands Out

Most portfolio projects demonstrate CRUD. Optio demonstrates product thinking at every layer:

  • Algorithmic feature — the trending engine uses phrase extraction with stopword filtering, not a generic word count. It’s designed to produce something actually useful.
  • Async scheduling — email delivery and cache refresh run on a real scheduler, not a button. It behaves like production software.
  • Shipped, not shelved — it’s live at optio.news, accessible to anyone, with real authentication. The gap between “demo” and “deployed” is where most projects die; this one made it across.
  • No framework crutch — Flask on the backend, vanilla JS on the frontend. Every behavior is intentional, not inherited.