GithubHelp home page GithubHelp logo

arguggi / heed Goto Github PK

View Code? Open in Web Editor NEW
0.0 4.0 0.0 497 KB

RSS reader

License: BSD 3-Clause "New" or "Revised" License

PLpgSQL 1.36% Haskell 97.53% Nix 1.11%
haskell rss rss-reader rss-feed-parser rss-aggregator

heed's Introduction

Heed - RSS Reader

heed-vty screenshot

Composed of 3 main parts:

- heed-backend
- heed-lib
- heed-vty

Build

Build withstack (tested), cabal (not tested), cabal new-build (tested with cabal HEAD).

Run one of:

- stack build
- cabal new-build heed-lib heed-backend heed-vty # Cabal 1.24
- cabal new-build # cabal HEAD, requires ghc-8.0.2

Building will probably take a long time since the dependency list is quite big (~180 deps).

Installing

Installation is still a very manual process, in the future installation/schema updates will be automated as much as possibile.

heed-backend expects postgresql running and listening on the default port and a conf file in /etc/heed/backend.ini (an example file is present in the confs/ subfolder). The postgresql user mentioned in the ini file should be able to connect without a password.

Once the user and database exists import table.sql into postgres.

Then you should add a user to the database (a command line options will be written sooner or later) by importing addUser.sql (changing the password hash with your own password hash generated by calling Heed.Crypto.generateHash yourpass)

heed-vty expects a conf file: $XDG_CONFIG_HOME/heed/heed.ini (usually $HOME/.config/heed/heed.ini), an example file is available in confs/.

Then you can run heed-vty (with the correct port/host/ssl information in heed.ini).

Adding feeds is then a matter of pressing n and supplying the needed information.

Components

heed-backend

Downloads and saves feed information/items in PostgreSQL

heed-vty

Displays information via a glances-like interface

Vty keybindings

- e: Opens 'Edit feed' screen
- n: Opens 'Add feed' screen
- j: Go to next item and set selected item as read
- k: Go to previous item and set selected item as read
- J: Go to next feed
- K: Go to previous feed
- o: Opens feed in chromium
- a: Set all items of selected feed as read and go to next feed
- r: Force refresh of selected feed
- q/esc: quit

heed-lib

Common library so we can, for example, keep serialization code in sync between back and frontend.

Some motivation and history

I wanted an rss reader that was completley usable without a mouse and what I was using before (tt-rss) crashed a couple of times a day for no apparent reason.

The project started out with a GCHJS frontend but since javascript is very limited (I found no "sane" way of opening a link in the background that would work across browsers) I switched to brick, which has been very stable and easy to work with.

Haskell notes

I created some mtl-style classes hoping to be able to test my functions. I hope to write these tests sooner or later.

Every feed will start an update thread that will download and add the latest items to the database and at the same time broadcast to every connected user the number of new items.

All things SQL work thanks to opaleye.

heed's People

Contributors

arguggi avatar ruggerodalo avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.