Skip to content

vladanmitkovic/NetPulse-KMP

Repository files navigation

NetPulse - KMP

NetPulse - KMP is a Kotlin Multiplatform project targeting Android, iOS and Desktop, built with Compose Multiplatform, Nav 3 (Navigation 3), Flow, Koin, Ktor, Room Database, DataStore, NSUserDefaults and Material3 based on MVVM architecture.

App screenshot

It is an app designed to help you find your current network speed.

Features

  • Tracking your download and upload network speed
  • Displaying Ping, Jitter and Packet Loss
  • Configurable test duration and number of pings
  • History screen to check and delete previous results
  • Dark and Light theme

Screenshots

Screenshot 1         Screenshot 2         Screenshot 3         Screenshot 4         Screenshot 5         Screenshot 6         Screenshot 6         Screenshot 6

Usage

On Home screen the closest server is selected by default. You can change it in Servers list drop down menu. Click on GO button to start testing your network speed. On History screen you can check and delete previous results. On Settings screen you can change test duration and number of pings. You can change app theme by using the icon at the top right on the Home screen.

Tech Stack

This is a Kotlin Multiplatform project targeting Android, iOS and Desktop.

NetPulse - KMP is built using a modern stack of technologies designed to offer robust performance and scalability:

  • Compose Multiplatform: For building native UIs.
  • Ktor: For network operations.
  • Room Database: For local data storage.
  • MVVM (Model-View-ViewModel): Architectural pattern.
  • DI Koin: Dependency injection.
  • DataStore: For Android data storage and management.
  • NSUserDefaults: For iOS data storage and management.
  • Nav 3: For navigating between screens.
  • Material 3: Latest Material Design components.

Architecture

NetPulse - KMP follows Google's official architecture guidance.

Architecture 1

NetPulse - KMP was built with Guide to app architecture, so it would be a great sample to show how the architecture works in real-world projects.

The overall architecture is composed of two layers; UI Layer and the data layer. Each layer has dedicated components and they each have different responsibilities. The arrow means the component has a dependency on the target component following its direction.

Architecture Overview

Architecture 2

Each layer has different responsibilities below. Basically, they follow unidirectional event/data flow.

UI Layer

Architecture 3

The UI Layer consists of UI elements like buttons, menus, tabs that could interact with users and ViewModel that holds app states and restores data when configuration changes.

Data Layer

Architecture 4

The data Layer consists of repositories, which include business logic, such as querying data from the local database and requesting remote data from the network. It is implemented as an offline-first source of business logic and follows the single source of truth principle.

License

Designed and developed by Vladan Mitkovic (2025)

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

About

NetPulse - KMP is a Kotlin Multiplatform network speed test app targeting Android, iOS and Desktop, built with Compose Multiplatform, Coroutines, Flow, Koin, Ktor, Room Database, DataStore, NSUserDefaults, Navigation3 and Material3 based on MVVM architecture.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors