fomo

command module
v0.0.0-...-f3888fe Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 24, 2026 License: MIT Imports: 3 Imported by: 0

README

fomo

A personal newsreader.

Features

  • Subscribe to RSS, Atom, and JSON feeds
  • Read articles in a clean, distraction-free interface
  • Manually mark articles as read, without doom-scrolling
  • Bookmark articles for later
  • Fetch feeds regularly while releasing new articles only at scheduled times
  • Dark mode for those late-night reading sessions
  • Self-hosted: no ads, no tracking, no paywalls
  • No JavaScript: just server-rendered HTML

Usage

Use the docker image from ghcr.io/cugu/fomo:latest, mount a custom configuration file to /app/fomo/config.json, mount a volume to /app/fomo/data to store the database, set the FOMO_PASSWORD environment variable to set the password for the service, and expose the service on port 8080, e.g.:

docker run -d \
  -p 8080:8080 \
  -v ./config.json:/app/fomo/config.json \
  -v ./fomodata:/app/fomo/data \
  -e FOMO_PASSWORD=yourpassword \
  ghcr.io/cugu/fomo:latest
Configuration

The configuration file is a JSON file with the structure shown below.

[!WARNING] Comments are not allowed in the JSON file, they are only shown here for clarity.

{
  // URL where the service is hosted
  "base_url": "http://localhost:8080",
  // Port to listen on
  "port": 8080,
  // How often to fetch feeds (defaults to 60 minutes)
  "fetch_interval_minutes": 60,
  // Times when fetched articles become visible
  "release_times": [
    7,
    16
  ],
  // List of feeds to subscribe to
  "feeds": {
    // simple RSS feed
    "xkcd.com": {
      "type": "rss",
      "url": "https://xkcd.com/rss.xml"
    },
    // lobste.rs feed with custom type
    "lobste.rs": {
      "type": "lobsters"
    },
    // rss feed, with fetching of the linked content
    "news.ycombinator.com": {
      "type": "rss",
      "url": "https://hnrss.org/frontpage?points=200",
      "fetch_link_content": true
    }
  }
}

release_times uses whole hours in the server's local timezone. Automatically fetched articles remain hidden until the next configured release time, when all waiting articles become visible. If no release times are configured, automatic fetching is disabled. Manual feed fetches and articles ingested by URL are visible immediately.

For backwards compatibility, update_times is accepted as a deprecated alias for release_times. If both are configured, release_times takes precedence.

Screenshots

List of articles

Screenshot of the article list

Article view

Screenshot of the article view

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
db

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL