Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/jarvislin/HackerNews-KMP

This is a Hacker News reader app implemented using Kotlin Multiplatform Compose for Android and iOS.
https://github.com/jarvislin/HackerNews-KMP

android app compose hacker-news ios kmp kotlin kotlin-multiplatform kotlin-multiplatform-sample multiplatform

Last synced: about 2 months ago
JSON representation

This is a Hacker News reader app implemented using Kotlin Multiplatform Compose for Android and iOS.

Awesome Lists containing this project

README

        

![Static Badge](https://img.shields.io/badge/Platform-iOS-blue?style=flat)
![Static Badge](https://img.shields.io/badge/Platform-Android-green?style=flat)
![GitHub License](https://img.shields.io/github/license/jarvislin/HackerNews-KMP?style=flat)

# Hacker News KMP
![hn_16_9](https://github.com/jarvislin/HackerNews-KMP/assets/3839951/bc29705a-6e69-474c-8453-91485d99b458)

This project is designed to showcase the capabilities of **Kotlin Multiplatform Compose** by implementing both Android and iOS apps. The aim is to demonstrate how effectively this framework can create cross-platform applications and learn new concepts I hadn't encountered before.

## Download


## Article

[How to Develop and Publish an App on Two Platforms Within a Week?](https://medium.com/p/918cea37dda2)

## Tech Stack

1. Entire project written in [Kotlin](https://kotlinlang.org/)
2. UI developed with [Compose Multiplatform](https://www.jetbrains.com/lp/compose-multiplatform/), following [Material 3](https://m3.material.io/) guidelines
3. Asynchronous tasks handled with [Coroutines](https://github.com/Kotlin/kotlinx.coroutines)
4. Dependency injection managed with [Koin](https://github.com/InsertKoinIO/koin)
5. API interactions handled by [Ktor Client](https://github.com/ktorio/ktor)
6. Time conversions using [kotlinx-datetime](https://github.com/Kotlin/kotlinx-datetime)
7. Serialization managed by [kotlinx-serialization](https://github.com/Kotlin/kotlinx.serialization)

For the full list of dependencies used in the project, please check [this file](https://github.com/jarvislin/HackerNews-KMP/blob/main/gradle/libs.versions.toml).

## Architecture

Architecture follows MVVM and Clean Architecture.

![clean_architecture_mvvm](https://github.com/jarvislin/HackerNews-KMP/assets/3839951/a3823b81-1e99-4457-bf7c-fcbe5051ed34)

## Contribution

You're welcome to submit PRs to this repo! I'm using Git Flow, so please create a feature branch for your work. When you're ready to submit a PR, set the base branch to develop. I'll review it as soon as I can.

## License

[Mozilla Public License Version 2.0](https://github.com/jarvislin/HackerNews-KMP/blob/main/LICENSE)