Skip to content

Repository files navigation

Exchangify - Currency Converter - KMP

Exchangify - Currency Converter - 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 a simple yet powerful currency converter app designed to help you convert currencies effortlessly. The app uses real-time exchange rates to provide accurate conversions between a wide range of world currencies.

Features

  • Real-time currency conversion.
  • Supports many world currencies.
  • Easy-to-use, intuitive interface.
  • Offline mode for conversion without internet connection (using the last fetched rates).
  • Favorites list to quickly access your most-used currencies.

Screenshots

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

Usage

Select the currency you want to convert from, enter the amount, and select the currency you want to convert to. The app will display the converted amount based on the current exchange rate.

Tech Stack

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

Exchangify - Currency Converter - 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

Exchangify - Currency Converter - KMP follows the Google's official architecture guidance.

Architecture 1

Exchangify - Currency Converter - 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 (2024)

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

Exchangify - Currency Converter - KMP is a Kotlin Multiplatform project 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

6 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages