imm alternatives and similar packages
Based on the "Web" category.
Alternatively, view imm alternatives based on common mentions on social networks and blogs.
-
servant
Servant is a Haskell DSL for describing, serving, querying, mocking, documenting web applications and more! -
swagger-petstore
swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition. -
haskell-bitmex-rest
swagger-codegen contains a template-driven engine to generate documentation, API clients and server stubs in different languages by parsing your OpenAPI / Swagger definition. -
neuron
Future-proof note-taking and publishing based on Zettelkasten (superseded by Emanote: https://github.com/srid/emanote) -
tagsoup
Haskell library for parsing and extracting information from (possibly malformed) HTML/XML documents -
keera-hails-reactive-htmldom
Keera Hails: Haskell on Rails - Reactive Programming Framework for Interactive Haskell applications -
ghcjs-dom
Make Document Object Model (DOM) apps that run in any browser and natively using WebKitGtk
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of imm or a related project?
README
imm
imm is a program that executes arbitrary callbacks (e.g. sending a mail, or writing a file) for each element of RSS/Atom feeds.
imm is written in Haskell, configured in Dhall. The project includes:
- a main executable
imm
that users run directly - secondary executables (
imm-writefile
,imm-sendmail
) which can be used as callbacks triggered byimm
- a Haskell library, that exports functions useful to both the main executable and callbacks; the API is documented in Hackage.
Installation
Using nix
This repository includes a nix package that can be installed by running the following command at the root folder:
nix-build --attr exe
Without nix
imm's executables can be installed using cabal-install tool:
cabal install imm
Then, the following runtime dependencies must be installed separately and provided in PATH
:
Configuration
Callbacks
Callbacks are configured through the $XDG_CONFIG_HOME/imm/callbacks.dhall
file. A commented template file is bundled with the project.
imm will call each callback once per feed element, and will fill its standard input (stdin
) with Avro-encoded binary data, which schema is described in file [idl/callback.json
](idl/callback.json).
Callback process is expected to return 0
in case of success, or any other exit code in case of failure, in which case the standard error output (stderr
) will be displayed.
Example use cases
Online feed reader
For the sake of I-want-the-mutt-of-feed-readers zealots, it is possible to turn any mail reader into a feed reader, by having imm send an e-mail with unread elements to an arbitrary address. You can then browse your feeds through your favourite mail reader, and leverage any mail-related tool on your feeds. Bonus points if your mail reader is online as you can now access your feeds from any computer connected to the Internet.
Here is an example configuration:
let Callback : Type =
{ _executable : Text
, _arguments : List Text
}
let sendMail =
{ _executable = "imm-sendmail"
, _arguments = []
}
let config : List Callback = [ sendMail ]
in config
imm-sendmail
does not have a built-in SMTP client, instead it must rely on an external SMTP client program, which is configured in $XDG_CONFIG_HOME/imm/sendmail.dhall
(cf example bundled with the project.) imm-sendmail
writes the mail bytestring to the standard input of the configured external program.
Offline read-it-later
imm is able to store a local copy of unread elements, to read them later while offline for example. External links won't work offline though.
let Callback : Type =
{ _executable : Text
, _arguments : List Text
}
let writeFile =
{ _executable = "imm-writefile"
, _arguments = [ "-d", "/path/to/folder" ]
}
let config : List Callback = [ writeFile ]
in config
Example usage
Subscribe to a feed through direct URL:
imm subscribe -u http://your.feed.org
Subscribe to a feed through an alternate link:
imm subscribe -a http://your.website.org
List subscribed feeds:
imm list
Show details about a feed:
imm show http://your.feed.org
Unsubscribe from a feed:
imm unsubscribe http://your.feed.org
Check for new elements without executing any action:
imm --read-only run --no-callbacks
Execute configured callbacks for each new element from all subscribed feeds:
imm run --all