Skip to content

FeedFlow is a minimalistic RSS Reader available on Android, iOS and macOS. Built with Kotlin Multiplatform, Jetpack Compose and SwiftUI.

License

Notifications You must be signed in to change notification settings

prof18/feed-flow

Repository files navigation

FeedFlow

FeedFlow is a minimalistic RSS Reader that I've built for myself and that's now available on Android, iOS, and macOS.

The majority of websites with an RSS feed don't share the article's content because they want you to go on their website. For this reason, FeedFlow always opens the original website, but you can choose the browser that you want (on mobile). For example, you can open an article on DuckDuckGo or Firefox Focus with all the trackers disabled and then just kill all the navigation data. In this way, the reading experience is separated from your main browser instance.

Your existing RSS collection can be easily imported: FeedFlow offers full and easy import and export capabilities through OPML files.

Feel free to open an issue (or, even better, a PR :)) if something is not working or if you want to propose a new feature.

Tech Stack

FeedFlow is built with Jetpack Compose, Compose Multiplatform, and SwiftUI. All the logic is shared using Kotlin Multiplatform.

FeedFlow uses RSSParser, an RSS parsing library I've built for Android, which is now Multiplatform!

Download 📦

FeedFlow is available for Android, iOS, and macOS.

You can also download the latest macOS version from GitHub Releases, or use Homebrew.

brew install --cask feedflow

Building the project 🛠️

To build the project, some setup is required:

Android

The google-services.json is required to build the project. You can generate a fake one with this command:

cp config/dummy-google-services.json androidApp/src/debug/google-services.json
cp config/dummy-google-services.json androidApp/src/release/google-services.json

or use the fdroid variant.

The dropbox sync won't work because the Dropbox API key is not included in the repository. You can generate your own key and add it in the keystore.properties file.

dropbox_key=your_key

iOS

Create a copy of the FeedFlow.xcconfig file with the following command:

cp iosApp/Assets/FeedFlow.xcconfig.template iosApp/Assets/FeedFlow.xcconfig

Fill in the DEVELOPMENT_TEAM and BUNDLE_ID_PREFIX values. The first is your Apple Team ID. The latter is your domain in reverse notation or what you use as the prefix for your projects.

The GoogleService-Info.plist (for release and dev variants) is required to build the project. You can generate a fake one with this command:

cp config/dummy-google-service.plist iosApp/GoogleService-Info-dev.plist
cp config/dummy-google-service.plist iosApp/GoogleService-Info.plist

The dropbox sync won't work because the Dropbox API key is not included in the repository. You can generate your own key and add it on the Config.xcconfig file. You can generate the file with the following command:

cp iosApp/Assets/Config.xcconfig.template iosApp/Assets/Config.xcconfig

Desktop (macOS)

To run the desktop version, run the following Gradle task:

./gradlew desktopApp:run

The dropbox sync won't work because the Dropbox API key is not included in the repository. You can generate your own key and add it in the desktopApp/src/jvmMain/resources/props.properties file.

dropbox_key=your-key

Translating 🌍

If you want to help translate FeedFlow, I will be more than happy.

To add a new translation, you can use Weblate or open a pull request with a new strings.xml file inside the i18n/src/commonMain/resources/locale/values-<language-code>/strings.xml folder and new files inside the assets/storecopy/<language-code> folder (where <language-code> is a two-letter ISO 639-1 language code).

License 📄

   Copyright 2023 Marco Gomiero

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.