twine
Twine is a cross-platform RSS reader app built using Kotlin and Compose Multiplatform. It features an nice user interface and experience to browse through the feeds, and supports Material 3 content based dynamic theming.
Download
Images
Features ✨
- Supports RDF, RSS, Atom and JSON feeds
- Feed management: Add, Edit, Remove & Pin feeds
- Feed grouping
- Access to pinned feeds/groups from bottom bar in the home screen
- Smart fetching: Twine looks for feeds when given any website homepage
- Article shortcut to fetch full article in reader view
- Bookmark posts to read later
- Search posts
- Background sync
- Import and exports your feeds with OPML
- Dynamic content theming
- Light/Dark mode support
Tech Stack 📚
- Kotlin Multiplatform
- Kotlin Coroutines
- Compose Multiplatform
- Ktor
- SQLDelight
- Decompose
- Kotlin-inject
For full list of dependencies used, please take a look at the catalog file.
Development 🛠️
You can just clone the repo and build it locally without requiring any changes.
Project requires JDK 20+, and based on the AGP version defined in libs.versions.toml
file,
you can use appropriate Android Studio to import the project.
Contributing 🛠️
You can contribute bug fixes to the project via PRs, for anything else open an issue to start a conversation.
This project uses ktfmt, provided via the spotless gradle plugin, and the bundled project IntelliJ codestyle. Run
./gradlew spotlessApply
to format the code before raising a PR.
Translations
You can help translate project on Crowdin. We use Compose resources for strings, you can read more about it here.
Made with 💖 by
- Sasikanth Miriyampalli / Development
- Eduardo Pratti / Design