Skip to content

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

License

Notifications You must be signed in to change notification settings

tetherto/pearpass-app-mobile

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

161 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Pearpass logo

pearpass-app-mobile

PearPass Mobile App is a secure and user-friendly password management solution designed for mobile devices. It allows users to store, generate, and manage their passwords across different platforms with strong encryption.

Table of Contents

Features

  • Secure password, identity, and credit card, notes and custom fields storage
  • Biometric authentication (fingerprint and face recognition)
  • Cross-device and platform synchronization
  • Offline access to your credentials
  • Encryption for data security
  • Password strength analysis
  • Random password generator
  • Easy-to-use interface

Installation

Node.js: Ensure you have the correct Node.js version installed. You can check the required version in the .nvmrc file. And ensure it matches to your current node version by running:

node --version
# Clone the repository
git clone git@github.com:tetherto/pearpass-app-mobile.git

# Navigate to the project directory
cd pearpass-app-mobile

# Initialize and update submodules
git submodule update --init --recursive

# To update all submodules to the latest `main` branch, use the provided script.
npm run update-submodules

# In case of specific remote use:
npm run update-submodules -- [remote-name]

# Install dependencies
npm install

# generate translation keys
npm run lingui:extract

npm run lingui:compile

# Generate worklet bundles
npm run bundle-bare

# Generate native iOS and Android directories (see Prebuild Instructions below)
npx expo prebuild --clean

Project Architecture

This project uses Expo Plugins to manage native iOS and Android configurations. The ios/ and android/ directories are not tracked in git and are generated dynamically using Expo's prebuild system.

Key Points:

  • Native directories (ios/ and android/) are gitignored
  • All native configurations are managed through Expo plugins in the plugins/ directory
  • Running npx expo prebuild --clean generates the native directories with all necessary configurations

Starting the Application

Before starting the application, you need to build it first. The build command produces bundles for iOS, iOS extension, and Android, and also runs custom prebuild:

# Build the application
npm run build

# Then start on your preferred platform
npm run ios      # For iOS
npm run android  # For Android

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.

Installation

  1. Install Maestro CLI:
# macOS
brew tap mobile-dev-inc/tap
brew install maestro
  1. Verify installation:
maestro --version

Running E2E Tests

Run a specific test flow:

maestro test e2e/welcome/passwordCreate.yaml

Run all test flows:

maestro test -e e2e/

Creating Maestro Tests

Each test file must have:

  1. A config section with appId
  2. A commands section after the "---" separator

Example:

appId: com.pears.pass
---
- launchApp
- assertVisible: 'Master password'
- tapOn:
    text: 'Master password'

For more information, refer to the Maestro documentation.

Dependencies

Related Projects

License

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