Skip to content

frysztak/orpington-news

Repository files navigation

logo

Orpington News

Orpington News is a self-hosted RSS/Atom feed reader with PWA support.

🎮 View Demo

GitHub release (latest SemVer) Docker image size License Codecov
Dev pipeline Main pipeline

FeaturesInstallationDevelopment Quick Start

dark theme screenshot

Features

  • RSS 1.0/RSS 2.0/Atom feed support
  • Nested collections drag-n-drop
    organize_collections.mp4
  • Light and dark theme
    light theme screenshot dark theme screenshot
  • Mobile-friendly UI with PWA support
    mobile.mp4
  • Syntax highlighting in code snippets
  • Configurable fonts

    Supported article fonts:
    • Nunito (default)
    • Ubuntu
    • Lato
    • OpenDyslexic

    Supported monospace fonts:
    • Source Code Pro (default)
    • Ubuntu Mono
    • Fira Mono
    • OpenDyslexic Mono

    Settings live preview:
    settings screenshot
  • Three collection layouts
    • Card
      card layout
    • Magazine
      card layout
    • List
      card layout
  • RSS feed auto-detection from page URL
    feed_autodetect.mp4
  • OPML import
  • Small Docker image size (40 MB uncompressed)

Installation

You need two things: Docker and PostgresSQL instance.

Docker image (ghcr.io/frysztak/orpington-news) exposes the app on port 8000. You also need to provide a handful of environmental variables:

  • APP_URL
  • DB_HOST
  • DB_PASS
  • COOKIE_SECRET - at least 64 characters long random string. If not set will use a fallback value. You can use openssl rand -base64 64 to generate it.

For DB_PASS and COOKIE_SECRET, _FILE suffix is also supported. For example, DB_PASS_FILE=./secrets/db_pass will read database password from file secrets/db_pass. All variables are described in Wiki page.

Sample Docker invocation:

docker run -it --name orpington-news --restart=always \
-e APP_URL=[ your public URL, including protocol ]  \
-e DB_HOST=[ your DB address ]  \
-e DB_PASS=[ your DB password ]  \
-p [ public port ]:8000  \
-d ghcr.io/frysztak/orpington-news

Sample docker-compose.yml is available here.

Development quick start

Orpington News backend is written in Rust, frontend is written in TypeScript using Next.js. To run the app locally, you need:

  • Node 18 (if you're using nvm, .nvmrc is provided)
  • Rust toolchain (rustup is recommended)
  • Just command runner
  • bunyan-rs log formatter
  • cargo watch
  • (optional) Docker, if you want to easily setup Postgres

Step-by-step guide:

  1. Checkout the repo:
  • dev branch, if you want latest and greatest
  • master branch, if you want last tagged release
  1. Start Postgres instance. You can do it any way you like, but for convenience, a docker-compose.db.yml file is provided. To run it:
$ docker compose -f backend/docker-compose.db.yml up -d

You should be able now to access pgAdmin at http://localhost:8080.

  1. Install frontend dependencies:
$ cd frontend
$ npm ci
  1. Orpington News uses just as a command runner, so running both frontend and API in watch mode is as simple as:
$ just
  1. You should be able to access the app on http://localhost:3000, API will be available on http://localhost:5000/api. You'll need to create your user account. That's it!

License