Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/frysztak/orpington-news

Self-hosted RSS reader with PWA support
https://github.com/frysztak/orpington-news

pwa rss rss-aggregator rss-feed rss-reader self-hosted

Last synced: about 2 months ago
JSON representation

Self-hosted RSS reader with PWA support

Awesome Lists containing this project

README

        


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


Features •
Installation •
Development Quick Start





dark theme screenshot

## Features


  • RSS 1.0/RSS 2.0/Atom feed support


  • Nested collections drag-n-drop



  • Light and dark theme


    light theme screenshot


    dark theme screenshot


  • Mobile-friendly UI with PWA support


  • 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




  • 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](https://github.com/frysztak/orpington-news/wiki/Env-variables).

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](https://github.com/frysztak/orpington-news/blob/master/docker-compose.template.yml).

## 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](https://github.com/nvm-sh/nvm), `.nvmrc` is provided)
- Rust toolchain (`rustup` is recommended)
- [Just](https://github.com/casey/just) command runner
- [bunyan-rs](https://github.com/LukeMathWalker/bunyan) log formatter
- [cargo watch](https://github.com/watchexec/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

2. 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:

```sh
$ docker compose -f backend/docker-compose.db.yml up -d
```

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

3. Install frontend dependencies:
```sh
$ cd frontend
$ npm ci
```

4. Orpington News uses `just` as a command runner, so running both frontend and API in watch mode is as simple as:
```sh
$ just
```

5. 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

- [GNU GPL v3](http://www.gnu.org/licenses/gpl.html)
- Copyright 2021-2023