Skip to content

tetherto/pearpass-app-mobile

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

436 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pearpass logo

PearPass Mobile

The mobile app for PearPass, an open-source, end-to-end encrypted password and identity manager built on Pear Runtime.


Table of Contents


Introduction

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.


Features

  • 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.

Installation

Prerequisites

  • Node.js — check the required version in .nvmrc and verify with:
node --version

Steps

# 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 --clean

Usage Examples

Visit the official PearPass documentation for step-by-step guides on setup, vault management, syncing across devices, browser extension usage, and all other PearPass features:

docs.pass.pears.com


Architecture

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.

Key Points:

  • Git ignores the native directories (ios/ and android/).
  • Expo plugins in the plugins/ directory manage all native configurations.
  • Running npx expo prebuild --clean generates the native directories with all necessary configurations.

Starting the Application

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 Android

Prebuild

This repo is Expo-managed. Prebuild generates the native android/ and ios/ folders; they are not committed.

Standard (Play/normal) Android prebuild

npm run bundle-bare
npx expo prebuild --platform android --clean

F-Droid Android prebuild

npm run bundle-bare
PEARPASS_DISTRIBUTION=fdroid npx expo prebuild --platform android --clean

More details:


Testing

Unit Testing

Run unit tests with Jest:

npm test

End-to-End Testing with Maestro

PearPass uses Maestro for end-to-end testing. Maestro allows you to write UI tests in simple YAML format.

Install Maestro

# macOS
brew tap mobile-dev-inc/tap
brew install maestro

Verify the installation:

maestro --version

Run E2E Tests

Run a specific flow:

maestro test e2e/welcome/passwordCreate.yaml

Run all flows:

maestro test -e e2e/

Test file format

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.


Dependencies


Related Projects

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

Contributing

We welcome contributions. See CONTRIBUTING.md for the development workflow and coding conventions.


License

This project is licensed under the Apache License, Version 2.0. See the LICENSE file for details.

About

PearPass is an open-source, privacy-first password manager with peer-to-peer syncing and end-to-end encryption.

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors