[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-7484":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":17,"stars7d":18,"stars30d":19,"stars90d":16,"forks30d":16,"starsTrendScore":14,"compositeScore":20,"rankGlobal":10,"rankLanguage":10,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":22,"hasPages":24,"topics":25,"createdAt":10,"pushedAt":10,"updatedAt":28,"readmeContent":29,"aiSummary":30,"trendingCount":16,"starSnapshotCount":16,"syncStatus":31,"lastSyncTime":32,"discoverSource":33},7484,"twine","msasikanth\u002Ftwine","msasikanth","Twine: A multiplatform RSS reader built using Kotlin and Compose","",null,"Kotlin",2330,125,9,10,0,3,6,19,28.3,"GNU General Public License v3.0",false,"main",true,[26,27],"compose-multiplatform","kotlin-multiplatform","2026-06-12 02:01:40","# Twine - RSS Reader\n\n![CI-MAIN](https:\u002F\u002Fgithub.com\u002Fmsasikanth\u002Ftwine\u002Factions\u002Fworkflows\u002Fci_checks.yml\u002Fbadge.svg?branch=main)\n[![Crowdin](https:\u002F\u002Fbadges.crowdin.net\u002Ftwine-rss-reader\u002Flocalized.svg)](https:\u002F\u002Fcrowdin.com\u002Fproject\u002Ftwine-rss-reader)\n\n\u003Cimg src=\"readme_images\u002Fbanner.png\" alt=\"banner\" \u002F>\n\nTwine is a modern cross-platform RSS reader app built using Kotlin and Compose Multiplatform. It features a nice user experience\nto browse through your feeds, with [dynamic theming](https:\u002F\u002Fm3.material.io\u002Fstyles\u002Fcolor\u002Fdynamic-color\u002Fuser-generated-color), changing app ambient color based on content.\n\n## Download\n\n\u003Ca href='https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=dev.sasikanth.rss.reader&pcampaignid=pcampaignidMKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'>\u003Cimg alt='Get it on Google Play' src='https:\u002F\u002Fplay.google.com\u002Fintl\u002Fen_us\u002Fbadges\u002Fstatic\u002Fimages\u002Fbadges\u002Fen_badge_web_generic.png' width=\"200px\"\u002F>\u003C\u002Fa>\n\u003Ca href=\"https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Ftwine-rss-reader\u002Fid6465694958?itsct=apps_box_badge&amp;itscg=30200\" style=\"display: inline-block; overflow: hidden; border-radius: 13px;\">\u003Cimg src=\"https:\u002F\u002Ftools.applemediaservices.com\u002Fapi\u002Fbadges\u002Fdownload-on-the-app-store\u002Fwhite\u002Fen-us;releaseDate=1694390400\" alt=\"Download on the App Store\" width=\"200px\">\u003C\u002Fa>\n\u003Ca href='https:\u002F\u002Fapt.izzysoft.de\u002Fpackages\u002Fdev.sasikanth.rss.reader'>\u003Cimg src=\"https:\u002F\u002Fgitlab.com\u002FIzzyOnDroid\u002Frepo\u002F-\u002Fraw\u002Fmaster\u002Fassets\u002FIzzyOnDroid.png\" width=\"200\" alt=\"Get it at IzzyOnDroid\">\u003C\u002Fa>\n\n## Features ✨\n\n- Supports **RDF**, **RSS**, **Atom** and **JSON** feeds\n- Feed management: Add, edit, delete, pin and group feeds\n- Bottom bar in home screen to access pinned feeds and groups\n- Smart fetching: Twine looks for feeds when given any website homepage\n- Article shortcut to fetch full article in the reader view\n- Audio player for podcasts and HTML audio tags\n- Reader view customizations (fonts, colors)\n- Bookmark posts to read later\n- Search posts\n- Blocked words: Filter out content based on keywords\n- Background sync\n- Cloud sync support with FreshRSS(GReader), Miniflux, Dropbox (Alpha ⚠)\n- Home screen widgets\n- Import and exports your feeds with OPML\n- App icon customization\n- Light, dark and amoled theme support\n\n## Project Structure 🏗️\n\nThe project follows a modular Kotlin Multiplatform structure:\n\n- `androidApp`: Android-specific application code and entry point.\n- `iosApp`: iOS-specific application code (Swift\u002FXcode project).\n- `shared`: Contains the core UI logic using Compose Multiplatform, ViewModels (using `kotlin-inject`), and shared presentation logic.\n- `core\u002F`: Modularized business logic.\n    - `base`: Base utilities, common interfaces, and platform abstractions.\n    - `data`: Data layer containing repositories, local database (SQLDelight), and sync logic.\n    - `model`: Domain models used across the project.\n    - `network`: Network layer using Ktor for fetching feeds and parsing.\n- `resources\u002Ficons`: Shared icon resources.\n\n## Tech Stack 📚\n\n- [Kotlin Multiplatform](https:\u002F\u002Fkotlinlang.org\u002Flp\u002Fmultiplatform\u002F)\n- [Compose Multiplatform](https:\u002F\u002Fwww.jetbrains.com\u002Flp\u002Fcompose-multiplatform\u002F)\n- [Kotlin Coroutines](https:\u002F\u002Fgithub.com\u002FKotlin\u002Fkotlinx.coroutines)\n- [Ktor](https:\u002F\u002Fktor.io\u002F)\n- [SQLDelight](https:\u002F\u002Fcashapp.github.io\u002Fsqldelight\u002F2.0.0-alpha05\u002F)\n- [Kotlin-inject](https:\u002F\u002Fgithub.com\u002Fevant\u002Fkotlin-inject)\n- [Coil](https:\u002F\u002Fcoil-kt.github.io\u002Fcoil\u002F)\n- [Multiplatform Markdown Renderer](https:\u002F\u002Fgithub.com\u002Fmikepenz\u002Fmultiplatform-markdown-renderer)\n- [Jetpack Libraries](https:\u002F\u002Fdeveloper.android.com\u002Fkotlin\u002Fmultiplatform)\n\nFor full list of dependencies used, please take a look at the [catalog](\u002Fgradle\u002Flibs.versions.toml) file.\n\n## Development 🛠️\n\nYou can just clone the repo and build it locally without requiring any changes. \n\nProject requires JDK 21+, and based on the AGP version defined in [`libs.versions.toml`](\u002Fgradle\u002Flibs.versions.toml) file, \nyou can use appropriate Android Studio to import the project.\n\n## Contributing 🛠️\n\nYou can contribute bug fixes to the project via PRs, for anything else open an issue to start a conversation.\n\nThis project uses ktfmt, provided via the spotless gradle plugin, and the bundled project IntelliJ codestyle. Run\n`.\u002Fgradlew spotlessApply` to format the code before raising a PR.\n\n### Translations\n\nYou can help translate project on [Crowdin](https:\u002F\u002Fcrowdin.com\u002Fproject\u002Ftwine-rss-reader). We use Compose resources\nfor strings, you can read more about it [here](https:\u002F\u002Fwww.jetbrains.com\u002Fhelp\u002Fkotlin-multiplatform-dev\u002Fcompose-multiplatform-resources-usage.html#strings).\n\n## Made with 💖 by\n\n- [Sasikanth Miriyampalli](https:\u002F\u002Fwww.sasikanth.dev) \u002F Development\n- [Eduardo Pratti](https:\u002F\u002Ftwitter.com\u002Fedpratti) \u002F Design\n\n## Error Reporting by\n\n\u003Ca href=\"http:\u002F\u002Fwww.bugsnag.com\u002F\">\n  \u003Cimg src=\"readme_images\u002Fbugsnag.png\" width=\"250\" alt=\"bugsnag logo\"\u002F>\n\u003C\u002Fa>\n\n## License\n\n[![GNU GPLv3 Image](https:\u002F\u002Fwww.gnu.org\u002Fgraphics\u002Fgplv3-127x51.png)](https:\u002F\u002Fgithub.com\u002Fmsasikanth\u002Ftwine\u002Fblob\u002Fmain\u002FLICENSE.txt)\n","Twine 是一个使用 Kotlin 和 Compose Multiplatform 构建的跨平台 RSS 阅读器应用。它支持 RDF、RSS、Atom 和 JSON 格式的订阅源，具备智能抓取、文章快捷阅读、音频播放、阅读视图自定义等功能，并且能够通过关键词过滤内容。此外，Twine 还提供了书签、搜索、后台同步以及与 FreshRSS、Miniflux 和 Dropbox 的云同步（Alpha 版）等高级功能。这款应用适用于需要在多个平台上高效管理和阅读 RSS 订阅的用户，无论是 Android 还是 iOS 用户都能享受到一致且流畅的阅读体验。",2,"2026-06-11 03:12:42","top_language"]