README.md 3.07 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
# FreshRSS Android application

Finally, an Android application specifically dedicated to the awesome [FreshRSS aggregator](https://freshrss.org/)

## Getting started

This project is a fairly standard Android application. As long as you use an correct setup of [Android studio](https://developer.android.com/studio/), 
everything should be fine.

## Running the tests

This project has no tests yet ¯\_(ツ)_/¯
There is an issue [about setting them up](https://git.feneas.org/christophehenry/freshrss-android/issues/16), 
though, as well as one for [setting up a CI](https://git.feneas.org/christophehenry/freshrss-android/issues/17)

## Contributing

As stated, this is a fairly standard Android project. There are a few things to know, though, before contributing...

1. This project is a pure Kotlin project. No Java will be tolerated. 
The original author is highly allergic to Java and was very happy to see the Android team embrace Kotlin. 
Since Kotlin is becoming the standard to develop Android applications 
(Android's support library are being rewritten in Kotlin, Jetpack — the Android library for rapid application development — 
is also written in Kotlin, and examples in Android's documentation show Kotlin code by default), this project adopted Kotlin.

2. It also heavily relies on [Jetpack](https://developer.android.com/jetpack/), the Android's rapid application development library. 
In particular, it uses:
  * [JP's data binding](https://developer.android.com/topic/libraries/data-binding/)
  * [`LiveData` classes](https://developer.android.com/topic/libraries/architecture/livedata)
  * [Navigation](https://developer.android.com/topic/libraries/architecture/navigation/)
  * [Room persistence library](https://developer.android.com/topic/libraries/architecture/room) for database interaction,
  * [`ViewModel`s](https://developer.android.com/topic/libraries/architecture/viewmodel)
It would be advised to read [Android's guid to app architecture](https://developer.android.com/jetpack/docs/guide)

3. It uses [Kovenent](http://kovenant.komponents.nl/), as Kotlin promise library to perform async operations.

4. It uses [Fuel](https://fuel.gitbook.io/documentation/) for HTTP requests.

5. You can debug your application using [Facebook's Stetho](http://facebook.github.io/stetho/).

6. Serialization and deserialization of HTTP request is handled by [Kotlinx serialization library](https://github.com/Kotlin/kotlinx.serialization/blob/master/README.md#kotlin-cross-platform--multi-format-reflectionless-serialization). 
(Might be an idea to move to [`fuel-livedata`](https://fuel.gitbook.io/documentation/support/fuel-livedata) in the future. Requires digging.)

## License

This project is licenced under GNU GPL v.3. See [LICENSE](https://git.feneas.org/christophehenry/freshrss-android/blob/develop/LICENSE).

## Aknowledgments

Thanks to [Marien Fressinaud](https://github.com/marienfressinaud), 
[Alexandre Alapetite](https://github.com/Alkarex) and all the FreshRSS contributors for their awesome work. 
And thanks again to Alexandre for helping in understanding their implementation of Google reader's API.