Wes Ellis./ a personal notebook
Technology. Stories. Side projects.
A few things worth writing down.
← Back to Side Projects

Side Projects

Terminal News: Headlines, Votes and Weather in Your Terminal

A stack of folded newspapers resting on a wooden table.

Part 2 of the thread App experiments

PROJECT AT A GLANCEOpen source · experimental
What it is
Terminal app
My role
Creator
Year
2025
Built with
  • Go
  • PostgreSQL
  • WebSockets
  • Docker
THE SHORT VERSION4 points
  • Terminal News is a text-only news reader for the terminal: community-voted headlines, comment threads, local classifieds and NOAA weather.
  • It's three Go programs: a backend API, a scraper that pulls RSS and news APIs, and the CLI you actually read in.
  • The README still says planning phase. The code has moved past that, but nothing's been released and the changelog versions are all TBD.
  • Payments, sponsorships and moderation are on the roadmap, not finished.

Most news sites fight you. Autoplay video, a cookie banner, three newsletter pop-ups and an infinite scroll designed so you never actually finish. If you already live in a terminal, it's fair to wonder what news would look like there: no images, monospace everything, ranked by people instead of an engagement algorithm.

terminal-news is that experiment. The tagline in the README is "AM Radio for the Information Age," and the pitch is CNN meets Reddit meets Craigslist, all in your command line.

What it's meant to be

There are three ideas bundled together. News, ranked by votes. Community, meaning comments and voting. And local, meaning weather and classifieds for where you live.

The feeds work the way you'd expect from a link aggregator:

Feed What it shows
Hot The most liked articles
Controversial High engagement, mixed votes
Rising Stories picking up fast
My Activity Your own comments and votes

The voting is a little different from a plain up and down. Opening an article counts +1, a like counts +2 and a dislike counts -1, so just reading something nudges it up a bit. Weather comes from NOAA and stays on screen the whole time. The look is meant to be old-school terminal, which is a vibe I've chased before with WeatherStar 4000 on a Raspberry Pi.

How it's built

The repo is three Go modules plus a shared one for models:

  • backend: an API server with handlers for articles, auth, votes, comments, classifieds, weather and payments, plus middleware for auth, rate limiting and security. A WebSocket hub pushes updates to connected clients, and a scheduler runs background jobs.
  • scraper: pulls articles from RSS feeds and a news API, then runs them through a classifier, a deduplicator and a moderation step before storing them. It also fetches weather.
  • cli: the reader itself, with views for the article list, article detail, comment tree, a classifieds form, a weather panel and a help screen. It has a local cache and its own mock server for testing without the backend.

PostgreSQL holds everything, with two SQL migrations for the schema, triggers and functions. There are Docker Compose files for dev and production and a CI workflow.

Tip

The CLI ships with a mock server under cli/cmd/mockserver, so you can work on the terminal UI without standing up the database and backend first.

Getting it

Clone it and follow the setup doc:

git clone https://github.com/wesellis/terminal-news.git
cd terminal-news

SETUP.md and DEVELOPER_QUICK_START.md walk through the rest, and there are Makefiles at the root and in the cli and scraper folders.

Rough edges

The README says the project is in planning and architecture, and the changelog agrees: every version from 0.1.0 to 0.5.0 is marked TBD. The file tree has clearly moved past pure planning, since there's a real backend, scraper and CLI in there. But nothing's released, and I wouldn't promise the three pieces run together cleanly today.

A few other things worth knowing:

  • The root go.mod still uses a placeholder module path, github.com/yourusername/terminal-news.
  • The cli and scraper folders are cluttered with status and handoff notes from development sessions. They need a cleanup pass.
  • The README mentions Redis for ranking, but I don't see it wired in yet.

Heads up

The payments handler exists, but the changelog puts premium listings, Stripe and sponsorships in 0.4.0. Treat the money side as a sketch.

What's next

The changelog is really the roadmap. First a working MVP with the hot feed, voting, auth and weather. Then comments and the Controversial and Rising feeds. Classifieds with moderation after that. If you like seeing where other app ideas in this thread ended up, DataChart went big and FlowDrive never left the spec.