{"id":19880017,"url":"https://github.com/passbolt/mobile-passbolt-android","last_synced_at":"2025-09-07T10:31:10.470Z","repository":{"id":65794792,"uuid":"429461202","full_name":"passbolt/mobile-passbolt-android","owner":"passbolt","description":"Android mobile app for Passbolt, the open source password manager for teams.","archived":false,"fork":false,"pushed_at":"2025-07-19T09:00:30.000Z","size":81350,"stargazers_count":50,"open_issues_count":2,"forks_count":14,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-07-19T14:55:42.361Z","etag":null,"topics":["android","credentials","kotlin","passbolt","password-manager","passwords"],"latest_commit_sha":null,"homepage":"https://play.google.com/store/apps/details?id=com.passbolt.mobile.android\u0026hl=en\u0026gl=US","language":"Kotlin","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/passbolt.png","metadata":{"files":{"readme":"README.md","changelog":"changelog/1.10.0.txt","contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null}},"created_at":"2021-11-18T14:29:13.000Z","updated_at":"2025-07-19T09:00:44.000Z","dependencies_parsed_at":"2025-07-19T12:14:10.720Z","dependency_job_id":null,"html_url":"https://github.com/passbolt/mobile-passbolt-android","commit_stats":null,"previous_names":[],"tags_count":33,"template":false,"template_full_name":null,"purl":"pkg:github/passbolt/mobile-passbolt-android","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/passbolt%2Fmobile-passbolt-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/passbolt%2Fmobile-passbolt-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/passbolt%2Fmobile-passbolt-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/passbolt%2Fmobile-passbolt-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/passbolt","download_url":"https://codeload.github.com/passbolt/mobile-passbolt-android/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/passbolt%2Fmobile-passbolt-android/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274026687,"owners_count":25209739,"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","status":"online","status_checked_at":"2025-09-07T02:00:09.463Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","credentials","kotlin","passbolt","password-manager","passwords"],"created_at":"2024-11-12T17:10:00.632Z","updated_at":"2025-09-07T10:31:10.427Z","avatar_url":"https://github.com/passbolt.png","language":"Kotlin","funding_links":[],"categories":[],"sub_categories":[],"readme":"\t      ____                  __          ____\n\t     / __ \\____  _____ ____/ /_  ____  / / /_\n\t    / /_/ / __ `/ ___/ ___/ __ \\/ __ \\/ / __/\n\t   / ____/ /_/ (__  |__  ) /_/ / /_/ / / /_\n\t  /_/    \\__,_/____/____/_.___/\\____/_/\\__/\n\n\tOpen source password manager for teams\n\t(c) 2021 Passbolt SA\n\thttps://www.passbolt.com\n\n## License\n\nPassbolt - Open source password manager for teams\n\n(c) 2021 Passbolt SA\n\nThis program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General\nPublic License (AGPL) as published by the Free Software Foundation version 3.\n\nThe name \"Passbolt\" is a registered trademark of Passbolt SA, and Passbolt SA hereby declines to grant a trademark\nlicense to \"Passbolt\" pursuant to the GNU Affero General Public License version 3 Section 7(e), without a separate\nagreement with Passbolt SA.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied\nwarranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See GNU Affero General Public License for more details.\n\nYou should have received a copy of the GNU Affero General Public License along with this program. If not,\nsee [GNU Affero General Public License v3](http://www.gnu.org/licenses/agpl-3.0.html).\n\n## About this repository\n\nThis repository contains the code of the Android mobile application.\n\n### Reporting a security Issue\n\nIf you've found a security related issue in Passbolt, please don't open an issue in GitHub.\nInstead contact us at security@passbolt.com. In the spirit of responsible disclosure we ask that the reporter keep the\nissue confidential until we announce it.\n\nThe passbolt team will take the following actions:\n\n- Try to first reproduce the issue and confirm the vulnerability.\n- Acknowledge to the reporter that we’ve received the issue and are working on a fix.\n- Get a fix/patch prepared and create associated automated tests.\n- Prepare a post describing the vulnerability, and the possible exploits.\n- Release new versions of all affected major versions.\n- Prominently feature the problem in the release announcement.\n- Provide credits in the release announcement to the reporter if they so desire.\n\n# How to build locally\n\n## With Android Studio (recommended)\n\n1. Launch [Android Studio](https://developer.android.com/studio) and open the cloned project\n2. Make sure that Android SDK with version `30` is installed to compile the project\n3. Wait until project configuration finishes (couple of minutes) and click `Sync with Gradle files` icon (top right toolbar - elephant\n   with blue arrow)\n4. Open the `Build Variants` tab (bottom left vertical pane) and under the `:app` module select `Active Build Variant` as `debug`\n5. Prepare a device for launch - at minimum `Android 10 (API 30)` is required\n    1. [create and launch Android emulator](https://developer.android.com/studio/run/managing-avds) **or**\n    2. [set up and launch on a real device](https://developer.android.com/studio/run/device)\n6. Hit the `Run` arrow (green play icon in the top center)\n\n## Without Android Studio\n\n1. Download [Android build tools](https://developer.android.com/studio#downloads) - scroll to `Command line tools only`\n2. Using the downloaded command line\n   tools [install the build tools](https://developer.android.com/studio/command-line/sdkmanager#install_packages) for `API 30` required\n   to compile the project\n3. Open terminal and navigate to cloned project root directory\n4. Use [Gradle Wrapper](https://docs.gradle.org/current/userguide/gradle_wrapper.html) to build the project from\n   terminal `./gradlew assembleDebug` (during first build the Wrapper will also download and setup Gradle if not present) - the built\n   application will be available at `{project-dir}/app/build/outputs/apk/debug`\n5. To install on a connected device (see above section 4.1 or 4.2) execute `./gradlew installDebug`\n\n# How run verifications locally\n\n1. Navigate to project root directory\n2. Execute `./gradlew detekt ktlint lintDebug unitTest koverMergedHtmlReport licenseeRelease dependencyUpdates buildHealth`\n\nYou can also run each check individually if needed:\n\n* `detekt` and `ktlint` - run static analysis for kotlin\n* `lintRelease` - run Android linter\n* `unitTest` - execute all unit tests\n* `koverMergedHtmlReport` - generate unit test coverage report\n* `licenseeRelease` - check if all dependencies have appropriate licenses\n* `dependencyUpdates` - check if any dependencies have updates in the release channel\n* `buildHealth` - produce a report about unused dependencies or incorrect dependency declaration\n\nTo execute Android instrumented tests connect your device and execute:\n`./gradlew connectedAndroidTest`\nNote for instrumented tests run a set of environment variables with test user must be set on the machine that builds the application:\n\n* `PASSBOLT_TEST_USERNAME` - ID of the user on the server\n* `PASSBOLT_TEST_USER_ID` - username of the user on the server\n* `PASSBOLT_TEST_DOMAIN` - server domain\n* `PASSBOLT_TEST_FIRST_NAME` - first name of the user\n* `PASSBOLT_TEST_LAST_NAME` - last name of the user\n* `PASSBOLT_TEST_AVATAR_URL` - URL of the user avatar (optional)\n* `PASSBOLT_TEST_KEY_FINGERPRINT` - user's key fingerprint\n* `PASSBOLT_TEST_ARMORED_KEY_BASE_64` - base64 of user's armored key\n* `PASSBOLT_TEST_PASSPHRASE` - user's key passphrase\n* `PASSBOLT_TEST_LOCAL_USER_UUID` - a random uuid\n\n# How to run instrumented tests locally\n\nFor running instrumented tests there we set\nup [Gradle managed devices](https://developer.android.com/studio/test/gradle-managed-devices) for consistent results.\nPlease use:\n\n* `./gradlew pixel5@targetSdkautomatedTestsAndroidTest` to run all the tests or\n* `./gradlew pixel5@targetSdkautomatedTestsAndroidTest -Pandroid.testInstrumentationRunnerArguments.class={_packege_class}` to run\n  specific class tests.\n* `./gradlew pixel5@targetSdkautomatedTestsAndroidTest -Pandroid.testInstrumentationRunnerArguments.class={_packege_class}#{_method}` to run\n  specific test.\n\n# Credits\n\nhttps://www.passbolt.com/credits\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpassbolt%2Fmobile-passbolt-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpassbolt%2Fmobile-passbolt-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpassbolt%2Fmobile-passbolt-android/lists"}