twine

Project Url: msasikanth/twine
Introduction: Twine: A multiplatform RSS reader built using Kotlin and Compose
More: Author   ReportBugs   
Tags:

CI-MAIN Crowdin

banner

Twine is a modern cross-platform RSS reader app built using Kotlin and Compose Multiplatform. It features a nice user experience to browse through your feeds, with dynamic theming, changing app ambient color based on content.

Download

Get it on Google Play Download on the App Store Get it at IzzyOnDroid

Features ✨

  • Supports RDF, RSS, Atom and JSON feeds
  • Feed management: Add, edit, delete, pin and group feeds
  • Bottom bar in home screen to access pinned feeds and groups
  • Smart fetching: Twine looks for feeds when given any website homepage
  • Article shortcut to fetch full article in the reader view
  • Audio player for podcasts and HTML audio tags
  • Reader view customizations (fonts, colors)
  • Bookmark posts to read later
  • Search posts
  • Blocked words: Filter out content based on keywords
  • Background sync
  • Cloud sync support with FreshRSS(GReader), Miniflux, Dropbox (Alpha ⚠)
  • Home screen widgets
  • Import and exports your feeds with OPML
  • App icon customization
  • Light, dark and amoled theme support

Project Structure 🏗️

The project follows a modular Kotlin Multiplatform structure:

  • androidApp: Android-specific application code and entry point.
  • iosApp: iOS-specific application code (Swift/Xcode project).
  • shared: Contains the core UI logic using Compose Multiplatform, ViewModels (using kotlin-inject), and shared presentation logic.
  • core/: Modularized business logic.
    • base: Base utilities, common interfaces, and platform abstractions.
    • data: Data layer containing repositories, local database (SQLDelight), and sync logic.
    • model: Domain models used across the project.
    • network: Network layer using Ktor for fetching feeds and parsing.
  • resources/icons: Shared icon resources.

Tech Stack 📚

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 21+, 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

Error Reporting by

bugsnag logo

License

GNU GPLv3 Image

Apps
About Me
GitHub: Trinea
Facebook: Dev Tools