Skip to content

Headlinr is a cross-platform news application built with Kotlin Multiplatform Mobile (KMP), delivering real-time headlines and breaking news across regions.

Notifications You must be signed in to change notification settings

RocqJones/Headlinr

Repository files navigation

📰 Headlinr

Headlinr is a modern, cross-platform news app built with Kotlin Multiplatform Mobile (KMM). It provides users with the latest headlines and breaking stories from around the world in real time. Powered by NewsAPI, Headlinr aggregates top news from multiple reliable sources and offers a clean, intuitive reading experience across Android and iOS.

The app enables users to filter news by country and category, view article details, and stay informed even when offline (coming soon). It’s designed with simplicity, speed, and personalization in mind, making it the ideal daily companion for staying up-to-date.


✨ Features

  • Display breaking news
  • View full article details
  • Filter by topics/categories
  • Search by query
  • Offline capability
  • Localisation (default based on location/country unless manually set)

🗺️ Project Roadmap

Phase 1 – Core Features

  • Show the latest news list: Headlines, Trending, & highlights
  • Can view more details based on the selection item.
  • Filter by topics.
  • Search relevant news.
  • Deploy Android app to the Play Store

Phase 2 – Monetization & Support

  • Run in-app ads to generate revenue.
  • Add a donation option for users to support development.

Phase 3 – Personalization & Persistence

  • Subscribe to breaking news and topics via notifications.
  • Notifications setup.
  • Introduce GPS location to show relevant news based on location.
  • Introduce offline support: SQLDelight.

Phase 4 – Discovery & Automation

  • Introduce reading assistant.
  • Automate publishing for both Android and iOS.

🛠️ Technology

  • Kotlin Multiplatform Mobile (KMP)
  • Jetpack Compose (Android UI)
  • SwiftUI (iOS UI)
  • Koin - Dependency injection
  • Ktor – for networking
  • Coroutines & Flow – for async and reactive programming
  • SQLDelight – for offline persistence
  • MVVM architecture
  • NewsAPI – for real-time news source

🗂️ Project Structure (KMP)

shared/                          # Shared KMP business logic
├── commonMain/
│   └── com/domain/ourapp/
│       ├── data/              # Data models & repositories
│       ├── di/                # Dependency injection (shared modules)
│       ├── network/           # Network layer (API clients)
│       ├── presentation/      # Shared ViewModels & UI state
│       ├── util/              # Extensions, helpers, constants
│
androidApp/                      # Android-specific layer
├── androidMain/
│   └── com/domain/ourapp/
│       ├── config/            # Android-specific configuration
│       ├── utils/             # Android-only utilities
│       ├── di/                # Android-specific DI modules
│       ├── ui/                # Android UI layer
│           ├── common/        # Reusable Android UI components
│           ├── navigation/    # Navigation (Compose NavHost, routes)
│           ├── screens/       # Android feature screens
│           ├── theme/         # Android theming (Compose theme setup)
│
iosApp/                          # iOS-specific layer
├── iosMain/
│   └── com/domain/ourapp/
│       ├── Assets/            # iOS resources (images, colors, strings)
│       ├── ui/                # iOS UI layer
│           ├── screens/       # iOS feature screens
│           ├── theme/         # iOS theming (colors, typography)
│           ├── common/        # Reusable iOS UI components
│               ├── contents/  # Reusable UI components (buttons, dialogs, etc)
│               ├── wrapper/   # Wraps shared ViewModels/state into SwiftUI

🚧 Setup & Installation

  1. Clone the repo:

    git clone https://github.com/RocqJones/headlinr.git
  2. Open the project in Android Studio (Giraffe+ recommended)

  3. Get your NewsAPI key from https://newsapi.org and add it to your config.

  4. Build & run on Android emulator or iOS simulator.

  5. Other links: Logo- Canva & design inspiration


🤝 Contributing

Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change or improve.


📄 License

MIT


🙏 Support the Project

If you like this project, consider starring the repo or donating in-app once available ❤️


About

Headlinr is a cross-platform news application built with Kotlin Multiplatform Mobile (KMP), delivering real-time headlines and breaking news across regions.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •