No description
  • Kotlin 97.4%
  • Ruby 2.1%
  • Swift 0.5%
Find a file
2025-10-04 12:42:31 +02:00
composeApp Refresh 2025-10-04 12:42:31 +02:00
docs Initial commit: QuickRead RSS Reader 2025-10-04 09:06:40 +02:00
gradle Initial commit: QuickRead RSS Reader 2025-10-04 09:06:40 +02:00
iosApp/iosApp Initial commit: QuickRead RSS Reader 2025-10-04 09:06:40 +02:00
shared Refresh 2025-10-04 12:42:31 +02:00
.gitignore Initial commit: QuickRead RSS Reader 2025-10-04 09:06:40 +02:00
build.gradle.kts Initial commit: QuickRead RSS Reader 2025-10-04 09:06:40 +02:00
claude.md Initial commit: QuickRead RSS Reader 2025-10-04 09:06:40 +02:00
gradle.properties Initial commit: QuickRead RSS Reader 2025-10-04 09:06:40 +02:00
gradlew Initial commit: QuickRead RSS Reader 2025-10-04 09:06:40 +02:00
gradlew.bat Initial commit: QuickRead RSS Reader 2025-10-04 09:06:40 +02:00
MIGRATION_COMPLETE.md Initial commit: QuickRead RSS Reader 2025-10-04 09:06:40 +02:00
README.md Initial commit: QuickRead RSS Reader 2025-10-04 09:06:40 +02:00
settings.gradle.kts Initial commit: QuickRead RSS Reader 2025-10-04 09:06:40 +02:00

QuickRead - Cross-Platform RSS Reader

A unified RSS reader for Android and iOS built with Kotlin Multiplatform Compose.

Features

  • RSS 0.9, RSS 2.0, and Atom feed support
  • Cross-platform (Android & iOS)
  • Material 3 design with dark/light themes
  • Real-time feed fetching and parsing
  • Article tracking (read/unread status)
  • 🚧 Google Drive sync (coming soon)
  • 🚧 Adaptive layouts for tablets/foldables (coming soon)

Architecture

QuickRead/
├── shared/           # Kotlin Multiplatform shared code
│   ├── domain/      # Business logic & models
│   ├── data/        # Repositories & parsers
│   └── Platform.kt  # Platform-specific implementations
├── composeApp/      # Compose Multiplatform UI
│   ├── ui/          # Screens, ViewModels, Theme
│   └── App.kt       # Main app entry point
└── iosApp/          # iOS app wrapper

Building the Project

Prerequisites

  • JDK 11 or higher
  • Android Studio Hedgehog or later
  • Xcode 15+ (for iOS)
  • No CocoaPods needed - Uses Swift Package Manager (SPM)

Gradle Wrapper

The project includes the Gradle wrapper (gradlew and gradlew.bat) which allows you to build without installing Gradle separately. The wrapper files are:

  • gradlew (Unix/macOS/Linux)
  • gradlew.bat (Windows)
  • gradle/wrapper/gradle-wrapper.jar
  • gradle/wrapper/gradle-wrapper.properties

Android

./gradlew :composeApp:assembleDebug

Or open the project in Android Studio and run directly.

iOS

Using Swift Package Manager (SPM) - No CocoaPods required!

The iOS app is configured to use the Kotlin framework directly via Xcode build scripts.

  1. Open the Xcode project:
open iosApp/iosApp.xcodeproj
  1. Build and run from Xcode

The Xcode build will automatically:

  • Use ./gradlew to build the shared Kotlin framework
  • Link the framework to the iOS app
  • No manual dependency installation needed!

Testing Feed Fetching

The app now includes full feed fetching functionality. Try these test feeds:

RSS 2.0 Feeds

  • https://rss.nytimes.com/services/xml/rss/nyt/Technology.xml - NY Times Tech
  • https://feeds.arstechnica.com/arstechnica/index - Ars Technica
  • https://www.theverge.com/rss/index.xml - The Verge

Atom Feeds

  • https://github.blog/feed/ - GitHub Blog
  • https://blog.google/rss/ - Google Blog

How to Test

  1. Launch the app on Android or iOS

  2. Tap the + button to add a feed

  3. Enter one of the feed URLs above

  4. The app will:

    • Fetch the feed content
    • Auto-detect the feed type (RSS 0.9, 2.0, or Atom)
    • Parse articles and display them
    • Show article count and unread badges
  5. Use the refresh button to update all feeds

Feed Parsing

The app supports three feed formats:

RSS 0.9 & 2.0

  • Parses: <title>, <link>, <description>, <pubDate>, <author>
  • Supports: Images via <enclosure> tags
  • Content: Extracts from <content:encoded> or falls back to <description>

Atom

  • Parses: <title>, <link>, <summary>, <published>, <author>
  • Supports: Images via <media:thumbnail> tags
  • Content: Extracts from <content> or falls back to <summary>

Tech Stack

  • Framework: Kotlin Multiplatform 2.0.21
  • UI: Compose Multiplatform 1.7.1
  • Networking: Ktor 3.0.0
  • Serialization: Kotlinx Serialization 1.7.3
  • Coroutines: Kotlinx Coroutines 1.9.0
  • Date/Time: Kotlinx DateTime 0.6.1

Current State

Implemented

  • Kotlin Multiplatform project structure
  • RSS/Atom feed parser (supports RSS 0.9, 2.0, Atom)
  • HTTP client with Ktor
  • ViewModel with state management
  • Feed list UI with loading/error states
  • Add feed functionality
  • Refresh feeds functionality
  • Article count and unread badges
  • Material 3 theming (light/dark)

🚧 Coming Soon

  • Google Drive synchronization
  • Adaptive layouts (phone/tablet/foldable)
  • Article detail view
  • Feed search and discovery
  • Offline support
  • Background refresh
  • Feed categories

Development

Running Tests

./gradlew test

Code Style

The project follows Kotlin coding conventions and uses:

  • Coroutines for async operations
  • StateFlow for state management
  • Clean Architecture principles
  • MVVM pattern for UI layer

License

Copyright © 2024 Teviot