A mobile client for Elfeed built with React Native and written in ClojureScript.
Clojure JavaScript Objective-C Java Python Shell
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
android
doc
env
images
ios
script
src
test
.babelrc
.buckconfig
.flowconfig
.gitignore
.hgignore
.re-natal
.watchmanconfig
CHANGELOG.md
Dockerfile
LICENSE
README.md
app.json
circle.yml
docker-compose.yml
figwheel-bridge.js
package.json
project.clj

README.md

elfeed-cljsrn

CircleCI

A mobile client for Elfeed built with React Native and written in ClojureScript.

Download

Elfeed for Android is available in Google Play or you can download APK's directly from Github releases

Motivation

Elfeed is an excellent RSS reader for Emacs and I was using it daily but now I'm traveling around and I need a basic mobile app. Also, this was a perfect excuse to play a bit with RN and CLJS.

This project uses:

I'm using Docker and Docker Compose in my development environment because I didn't want to install npm, js packages and all the Android libraries in my laptop. I'm not totally comfortable with this way setup and probably it wouldn't fit very well for iOS development, will see.

Screenshots

Development

I use Emacs for development and Genymotion as an Android emulator.

  • $ script/boot # Start RN packager and a clojure REPL
  • $ script/dev-build
  • M-x cider-connect ; localhost ; 7888 # Connect to clojure REPL in port 7888
  • user> (start-figwheel "android")
  • $ script/install
  • Open the app in Genymotion

Testing

At this moment, there are almost no tests in the project. The idea is add unit tests for event handlers, where almost all the logic of the app is happening. Later, will see if it's possible to add some kind of tests for views, trying to introduce the idea of snapshot testing, as React Native is doing with Jest.

Running the tests

$ lein doo node test once

Todo

  • Publish on Google Play
  • Elfeed: Authentication (auth basic or something more complex)
  • Elfeed: Mark entry as read
  • App: Update code to new re-frame v0.8
  • App: Split code in scenes and components
  • App: Testing
  • RN: Change navigation to new navigation experimental
  • RN: Use SwipeableListView to mark an entry as read from the list
  • iOS version (I won't work on this because I don't use iOS, but I'm happy to help you if you are interested)
  • Version for tablets