Skip to content

🔥Kotlin Multiplatform Desktop/Android/iOS Energy Tracker app

License

Notifications You must be signed in to change notification settings

ryanw-mobile/OctoMeter

Repository files navigation

Project Kunigami /
OctoMeter: Empowering Smart Electricity Usage
Gradle Build codecov Codacy Badge

Production-grade Kotlin Multiplatform App targeting Android, iOS, Desktop


cover image


Made in the UK, For the UK.

Complementary article: Releasing my First True Kotlin Multiplatform App

This app is designed for Octopus Energy customers in the UK who have a smart meter installed. If you don’t have a smart meter, you can still try out the app. It runs in demo mode by default, showing fake user data when authentication is required.

cover image

It works for me

This is a fully functional app that I developed for myself, and I use it every day to monitor energy consumption and save money. While it should technically work for other Octopus Energy customers, I can’t guarantee it will handle all scenarios such as different tariffs or multiple meter installations. These may produce data that the app cannot process.

This is a dashboard-type app that runs on desktop (desktop-first), Android, and iOS. It supports an adaptive layout that works on mobile, tablet, and dynamic desktop window sizes. The app honours light and dark modes on all supported platforms.

The main purposes of this app are:

  • Compile smart meter electricity usage; estimate and project electricity usage and cost.
  • Track the Agile Octopus tariff unit rates for the coming 24 hours, with countdown and automatic refresh.
  • Browse available Octopus Energy tariffs.

For non-Octopus Energy customers, or non-UK residents, the demo mode will display random meter readings and default tariff rates to illustrate the app’s functionality.


cover image


The current release meets my daily needs. However, this project will continue to be maintained and improved as a way for me to gain real-world hands-on Kotlin Multiplatform development experience. For this reason, the app was intentionally built to reach production-level quality as much as possible.

If you like this app, consider giving me a star, following me on Medium, or connecting with me on LinkedIn.

I am also looking for my next Senior Android Dev role, too.



Switch to Octopus!

  • Learn more about the Agile Octopus smart tariff, or other available Octopus tariffs shown in this App.
  • Switch to Octopus Energy using this link, both of us will get £50 (or £100 for business).



Running the app

I use Android Studio Koala to build the Android and Deskop apps. Xcode 15.4 for iOS.

All downloadables are provided under the Release Section.

  • MacOS Desktop App: We provide a DMG installer.
  • Windows Desktop App: We provide both EXE and MSI installers.
  • Android: We provide signed APK and App Bundle.
  • iOS: Join as a tester at Test Flight.
  • To build and run the Desktop app yourself, execute ./gradlew run



To-do lists

Planned enhancements are logged as issues.

I have limited development budget. There are known issues which are not likely to be address for the time being due to shortage of funding.

Important

Regarding fixed charges, tariff rates, and cost estimation shown on the app: This app has no access to your payment details, so by default it applies the direct debit tariff to estimate usage costs. The daily half-hourly cost should closely match the actual bill. For longer intervals, the app may not produce the exact billable amount. Please refer to your actual bills in that case.



Some technical details

  • /composeApp is for Kotlin code shared across the Compose Multiplatform application. It contains several subfolders:

    • commonMain is for code that’s common for all targets.
    • androidMain is the traditional Android project root.
    • desktopMain is for the desktop (JVM) app.
    • iosMain is for the Kotlin code to be exposed to the iOS app.
  • /iosApp contains the iOS application. Open OctoMeter.xcworkspace to build the App.

Dependencies

Plugins



Data Security and Privacy

First thing first: This app can run under the demo mode without requiring any credentials.

To pull real smart meter data from your Octopus Energy account, you need to generate an API key for your account at https://octopus.energy/dashboard/new/accounts/personal-details/api-access. This app never asks for your Octopus customer account password, and you can always generate a new API key to invalidate the old keys.

This app stores your API key, account number, MPAN and meter serial number using EncryptedSharedPreferences on Android, or the Keychain on iOS. On desktop, these credentials are currently unencrypted, but expected to do so when the library we use supports it.



License

This project is licensed under the Mozilla Public License Version 2.0 (MPL-2.0) with a non-commercial clause. See the LICENSE file for details.

Icon licenses

Every tiny piece matters. This App contains the icons contributed by:

MIT License:

Apache 2.0 License:

CC BY 4.0 License:

ISC License: