{"id":18430350,"url":"https://github.com/avan1235/open-otp","last_synced_at":"2025-04-09T16:17:46.822Z","repository":{"id":196200748,"uuid":"688384879","full_name":"avan1235/open-otp","owner":"avan1235","description":"Kotlin Multiplatform implementation of One Time Passwords Manager that compiles to native code on all platforms from single codebase","archived":false,"fork":false,"pushed_at":"2025-04-09T05:13:35.000Z","size":571,"stargazers_count":78,"open_issues_count":1,"forks_count":5,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-09T16:17:36.127Z","etag":null,"topics":["android","authenticator","hotp","hotp-verification","hotpauth","ios","kmp","kotlin","kotlin-multiplatform","kotlin-multiplatform-mobile","linux","macos","otp","otp-verification","otpauth","totp","totp-verification","totpauth","windows"],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/avan1235.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-09-07T08:35:35.000Z","updated_at":"2025-02-25T21:37:48.000Z","dependencies_parsed_at":"2023-12-23T05:20:19.749Z","dependency_job_id":"5ae808a2-b4ac-45bb-b166-4eb9bf3bbb50","html_url":"https://github.com/avan1235/open-otp","commit_stats":null,"previous_names":["avan1235/open-otp"],"tags_count":21,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avan1235%2Fopen-otp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avan1235%2Fopen-otp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avan1235%2Fopen-otp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/avan1235%2Fopen-otp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/avan1235","download_url":"https://codeload.github.com/avan1235/open-otp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248065282,"owners_count":21041872,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","authenticator","hotp","hotp-verification","hotpauth","ios","kmp","kotlin","kotlin-multiplatform","kotlin-multiplatform-mobile","linux","macos","otp","otp-verification","otpauth","totp","totp-verification","totpauth","windows"],"created_at":"2024-11-06T05:20:25.647Z","updated_at":"2025-04-09T16:17:46.792Z","avatar_url":"https://github.com/avan1235.png","language":"Kotlin","readme":"# OpenOTP\n\n[![Platforms](https://img.shields.io/badge/mobile-Android%20%7C%20iOS-blue)](https://github.com/avan1235/open-otp/releases)\n[![Platforms](https://img.shields.io/badge/desktop-Windows%20%7C%20macOS%20%7C%20Linux-blue)](https://github.com/avan1235/open-otp/releases)\n\n[![Build](https://img.shields.io/github/actions/workflow/status/avan1235/open-otp/release.yml?label=Build\u0026color=green)](https://github.com/avan1235/open-otp/actions/workflows/release.yml)\n[![Latest Release](https://img.shields.io/github/v/release/avan1235/open-otp?label=Release\u0026color=green)](https://github.com/avan1235/open-otp/releases)\n[![Google Play](https://img.shields.io/endpoint?color=green\u0026logo=google-play\u0026logoColor=green\u0026url=https%3A%2F%2Fplay.cuzi.workers.dev%2Fplay%3Fi%3Dml.dev.kotlin.openotp.OpenOtp%26l%3DGoogle%2520Play%26m%3D%24version)](https://play.google.com/store/apps/details?id=ml.dev.kotlin.openotp.OpenOtp)\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-red.svg)](./LICENSE.md)\n[![GitHub Repo stars](https://img.shields.io/github/stars/avan1235/open-otp?style=social)](https://github.com/avan1235/open-otp/stargazers)\n[![Fork OpenOTP](https://img.shields.io/github/forks/avan1235/open-otp?logo=github\u0026style=social)](https://github.com/avan1235/open-otp/fork)\n\n![presentation](https://github.com/avan1235/open-otp/assets/11787040/a268e72d-8ef4-4878-9e61-bf242f2313d3)\n\n## Download and run application\n\n### Download compiled application\n\n#### Google Play\n\nLatest Android version is available on\n[Google Play](https://play.google.com/store/apps/details?id=ml.dev.kotlin.openotp.OpenOtp).\n\n\u003ca href='https://play.google.com/store/apps/details?id=ml.dev.kotlin.openotp.OpenOtp'\u003e\u003cimg alt='Get it on Google Play' width=\"300\" src='https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png'/\u003e\u003c/a\u003e\n\n#### GitHub Releases\n\nYou can download compiled version of application from\n[GitHub Releases](https://github.com/avan1235/open-otp/releases).\n\nYou can find the compiled vesion of the application for Android, Linux, macOS and Windows.\n\nPlease note that for running unsigned version of macOS application, you need to temporarily\ndisable Gatekeeper, so after installing the application run\n\n```shell\nsudo xattr -dr com.apple.quarantine  /Applications/OpenOTP.app\n```\n\nin the terminal. You can learn more about this\n[here](https://web.archive.org/web/20230318124537/https://disable-gatekeeper.github.io/).\n\nTo install Linux version run:\n\n```shell\nsudo dpkg -i  openotp.deb\n```\n\n### Build application locally\n\nThe project is configured with with Gradle and you can find the\nlatest release build commands in the [release.yml](./.github/workflows/release.yml) file.\n\nExample build commands for particular platforms:\n- desktop: `./gradlew desktopApp:packageDistributionForCurrentOS`\n- Android: `./gradlew androidApp:assembleDebug`\n- iOS: open [iosApp.xcodeproj](./iosApp/iosApp.xcodeproj) in Xcode and run the build \n(you might need to configure the `Team` in `Signing \u0026 Capabilities`)\n\n## Tech Stack\n\n### Tools \u0026 Libraries\n\n- [Kotlin](https://kotlinlang.org/)\n- [Compose Multiplatform](https://github.com/JetBrains/compose-multiplatform) (UI)\n- [Material3 design](https://m3.material.io/) (UI components)\n- [Kotlin Coroutines](https://github.com/Kotlin/kotlinx.coroutines) (structured concurrency)\n- [Kotlin Datetime](https://github.com/Kotlin/kotlinx-datetime) (current time access)\n- [Kotlin Serialization](https://github.com/Kotlin/kotlinx.serialization) (data serialization)\n- [Koin](https://github.com/InsertKoinIO/koin) (DI)\n- [Kermit](https://github.com/touchlab/Kermit) (Logging)\n- [Decompose](https://github.com/arkivanov/Decompose) (lifecycle-aware business logic)\n- [Essenty](https://github.com/arkivanov/Essenty) (handy additions to Decompose)\n- [moko resources](https://github.com/icerockdev/moko-resources) (resources for localization)\n- [Multiplatform Settings](https://github.com/russhwolf/multiplatform-settings) (persistence of keys)\n- [uuid](https://github.com/benasher44/uuid) (UUID generation)\n- [ByteBuffer](https://github.com/DitchOoM/buffer) (allocate and modify `byte[]` natively)\n- [Uri KMP](https://github.com/eygraber/uri-kmp) (parsing URI from QR codes)\n- [Webcam Capture API](https://github.com/sarxos/webcam-capture/) (desktop camera bindings)\n- [zxing](https://github.com/zxing/zxing) (desktop QR codes recognition)\n- [AndroidX Security](https://developer.android.com/jetpack/androidx/releases/security) (`EncryptedSharedPreferences` for Multiplatform Settings)\n- [AndroidX CameraX](https://developer.android.com/jetpack/androidx/releases/camera) (camera access on Android)\n- [ML Kit Barcode scanning](https://developer.android.com/jetpack/androidx/releases/camera) (Android QR codes recognition)\n- [Accompanist](https://github.com/google/accompanist) (permissions and system UI control on Android)\n\n### Build \u0026 CI\n\n- [Gradle KTS](https://docs.gradle.org/current/userguide/kotlin_dsl.html) (Kotlin DSL)\n- [Gradle version catalogs](https://developer.android.com/build/migrate-to-catalogs) (dependencies versions)\n- [Github Actions](https://github.com/avan1235/open-otp/actions) (CI/CD)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favan1235%2Fopen-otp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Favan1235%2Fopen-otp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Favan1235%2Fopen-otp/lists"}