The mobile app for PearPass, an open-source, end-to-end encrypted password and identity manager built on Pear Runtime.
- Introduction
- Features
- Installation
- Usage Examples
- Architecture
- Starting the Application
- Prebuild
- Testing
- Dependencies
- Related Projects
- Contributing
- License
PearPass is an open-source, privacy-first password and identity manager that gives you full control over your sensitive information. It makes storing and managing your credentials simple, secure, and private. PearPass encrypts and stores all data locally on your device.
Unlike traditional password managers that rely on centralized servers, PearPass is built on Pear Runtime and uses peer-to-peer technology to sync your credentials directly between your devices, ensuring they remain private, secure, and always under your control.
- Encrypted-at-rest storage — PearPass encrypts passwords, credit cards, secure notes, and custom fields before writing them to disk.
- Biometric authentication — Unlock your vault with fingerprint or face recognition.
- Cross-device sync — PearPass syncs credentials directly between your devices, with no central server.
- Offline access — Access your vault anytime, even without a network connection.
- Password health — Analyse password strength and identify weak passwords.
- Random password generator — Generate strong, unique passwords.
- Easy-to-use interface — a clean, intuitive design for managing your credentials on the go.
- Node.js — check the required version in
.nvmrcand verify with:
node --version# 1. Clone the repository
git clone git@github.com:tetherto/pearpass-app-mobile.git
# 2. Go to the cloned directory
cd pearpass-app-mobile
# 3. Install dependencies
npm install
# 4. Generate translation keys
npm run lingui:extract
npm run lingui:compile
# 5. Generate worklet bundles
npm run bundle-bare
# 6. Generate native iOS and Android directories (see Prebuild below)
npx expo prebuild --cleanVisit the official PearPass documentation for step-by-step guides on setup, vault management, syncing across devices, browser extension usage, and all other PearPass features:
This project uses Expo Plugins to manage native iOS and Android configurations. Git does not track the ios/ and android/ directories — Expo's prebuild system generates them dynamically.
- Git ignores the native directories (
ios/andandroid/). - Expo plugins in the
plugins/directory manage all native configurations. - Running
npx expo prebuild --cleangenerates the native directories with all necessary configurations.
Before starting the application, build it first. The build command produces bundles for iOS, iOS extension, and Android, and runs the custom prebuild:
# Build the application
npm run build
# Then start on your preferred platform
npm run ios # For iOS
npm run android # For AndroidThis repo is Expo-managed. Prebuild generates the native android/ and ios/ folders; they are not committed.
npm run bundle-bare
npx expo prebuild --platform android --cleannpm run bundle-bare
PEARPASS_DISTRIBUTION=fdroid npx expo prebuild --platform android --cleanMore details:
Run unit tests with Jest:
npm testPearPass uses Maestro for end-to-end testing. Maestro allows you to write UI tests in simple YAML format.
# macOS
brew tap mobile-dev-inc/tap
brew install maestroVerify the installation:
maestro --versionRun a specific flow:
maestro test e2e/welcome/passwordCreate.yamlRun all flows:
maestro test -e e2e/Each test file requires an appId block and a --- separator before the commands:
appId: com.pears.pass
---
- launchApp
- assertVisible: 'Master password'
- tapOn:
text: 'Master password'For more information, see the Maestro documentation.
| Project | Description |
|---|---|
pearpass-app-desktop |
Desktop app for PearPass |
pearpass-lib-vault |
Vault management library |
pearpass-lib-vault-core |
Bare worker and client for PearPass vaults |
pearpass-lib-ui-react-native-components |
React Native UI component library |
pearpass-lib-ui-react-components |
React UI component library |
tether-dev-docs |
Developer documentation and guides |
We welcome contributions. See CONTRIBUTING.md for the development workflow and coding conventions.
This project is licensed under the Apache License, Version 2.0. See the LICENSE file for details.
