• Stars
    star
    396
  • Rank 108,801 (Top 3 %)
  • Language
    TypeScript
  • License
    GNU General Publi...
  • Created almost 8 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

📱 React-Native mobile application for Buttercup

Buttercup Mobile

Mobile vault application for Buttercup Password Manager

Buttercup Tests status Backers on Open Collective Sponsors on Open Collective Chat securely on Keybase

Get it from iTunes Get it on Google Play

Vault screen Entry screen

About

This repository holds the source for the Buttercup mobile application, which is available for the following platforms:

  • iOS 12+
  • Android 8.0+

Currently only phones are supported, not tablets.

The mobile application allows for full integration with Buttercup archives stored on a variety of platforms. Like the other applications, this mobile application makes use of AES 256bit encryption with over 200k PBKDF2 password derivation iterations.

The Buttercup for Mobile application boasts the following features:

  • On-device encryption and decryption
  • Auto-hide screen when app is sent to background (like banking apps)
  • Auto-lock vaults after a certain period of inactivity
  • Add/Edit/Delete entries
  • Unlock vaults even when offline (read-only)
  • Autofilling of login forms in Safari (iOS only)
  • Password generator
  • Biometric access

You can read about the changes and releases of the application in the changelog.

Introduction

This project uses React Native to build native iOS and Android applications from a React/JavaScript codebase. The majority of the codebase is JavaScript which utilises the following platforms:

  • ReactJS
  • Redux
  • React Native Router Flux

As Buttercup makes use of strong cryptography, certain encryption/decryption tasks are performed using pure native code (Objective-C/Java). Only the bare minimum required for increased performance is handled on the native side, with the rest being solely JavaScript.

Installation

Ensure that you're using NodeJS 14 or newer on OSX. Android projects can be built and tested on Linux and Windows, but these platforms are not officially supported.

Before getting started, ensure you follow the official React Native Getting Started guide for your desired platform (iOS/Android). It is also recommended to have the react-native-cli installed:

npm install -g react-native-cli

Run the following to initialise the project:

npm install

Once all dependencies are installed and your target development environments are setup (Xcode for iOS and Android Studio for Android), it should be possible to begin development with virtual devices.

Important note about Node.js support: Development for this project should be performed on Node version 8. Although it may work on versions 6 and newer, we will not be supporting issues raised for these versions. Similarly, we do not currently support NodeJS version 9.

iOS development

Providing Xcode is setup correctly, running the following will launch the application in an iPhone emulator:

npm run ios

Android development

Ensure that Android Studio is setup correctly and that an AVD has been created. The virtual device must be on API level 23 or greater running Android 6.0 or newer. You must have the AVD started before continuing with no other devices connected. To ensure you only have one device running, execute the following on the command-line:

adb devices

To run the application in the virtual device, run the following:

npm run android

Running on an Android device

To run on an actual device, first terminate any AVDs that are running. Connect the phone over USB and run adb devices to ensure that it shows up. You can then run npm run start:android to launch the application on the device.

The same software version restrictions apply to real devices.

Building an APK

To build a signed APK:

  1. Close all other development resources for the project.
  2. Run npm run build:android to first build the project.
  3. In Android Studio, choose Build > Generate Signed APK.
  4. Build a release APK by following the instructions in the GUI.

Publishing error: duplicate resources

If you encounter a publishing error when generating a signed APK, follow these instructions.

Contributing

We love contributions - anything from new features and bug fixes to suggestions and questions. Please follow our contribution guide.

Development

Please keep in-line with the code style of each file, regardless of what tests are run (linting etc.). When creating new files their format is expected to closely resemble that of other existing source files.

Contributors

This project exists thanks to all the people who contribute. [Contribute].

Backers

Thank you to all our backers! 🙏 [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

More Repositories

1

buttercup-desktop

🔑 Cross-Platform Passwords & Secrets Vault
TypeScript
4,298
star
2

buttercup-core

🎩 The mighty NodeJS password vault
TypeScript
469
star
3

buttercup-browser-extension

🌏 Buttercup browser extension
TypeScript
233
star
4

dossier

📈 Project overview and feature planning for Buttercup
48
star
5

buttercup-importer

🎣 3rd-party archive importer for Buttercup
JavaScript
43
star
6

rust-crypto-wasm

Rust
38
star
7

ui

React UI Components used in Buttercup products
JavaScript
31
star
8

react-formatted-input

An input component that abides by configurable formatting and constraint rules
JavaScript
29
star
9

buttercup-cli

Buttercup password manager for the command line
TypeScript
27
star
10

locust

Login form location & automation utility
TypeScript
20
star
11

buttercup-website

Buttercup's Homepage
JavaScript
12
star
12

buttercup-exporter

Export Buttercup vaults
JavaScript
9
star
13

google-oauth2-client

Google OAuth2 authentication client
TypeScript
9
star
14

secure-file-host

Secure filesystem host toolkit for Browser-Desktop datasource connection
JavaScript
8
star
15

buttercup-generator

Simple Javascript Password Generator for Buttercup Products
JavaScript
8
star
16

buttercup-core-web

Web-based build of the Buttercup core library.
JavaScript
7
star
17

channel-queue

A queue management library with channels
JavaScript
6
star
18

dropbox-client

Dropbox client library
JavaScript
6
star
19

crypto

🔒 Buttercup's native encryption tools written in Rust
Rust
6
star
20

buttercup-server

Archive server for Buttercup
JavaScript
6
star
21

googledrive-client

Client for making basic Google Drive requests
TypeScript
6
star
22

credentials

Encrypted credentials handler for Buttercup
JavaScript
5
star
23

signing

Signing and verification tools for Buttercup archives
JavaScript
4
star
24

datasources

Buttercup archive datasources
JavaScript
4
star
25

file-interface

Client request library interface and explorer
TypeScript
4
star
26

buttercup-mobile-compat

Compiled library bundle for Buttercup's mobile platform
JavaScript
3
star
27

config

Configuration utility
JavaScript
3
star
28

desktop-v2-beta

Buttercup desktop application
TypeScript
3
star
29

app-env

Buttercup application environment configuration manager
JavaScript
3
star
30

bcupfs

Buttercup FileSystem for in-vault file storage and encryption
JavaScript
3
star
31

wasmcane

WASM Cryptography tools for iocane
Rust
2
star
32

account-rescue

Account reset/rescue framework for NodeJS
JavaScript
2
star
33

search

Vault searching components
JavaScript
2
star
34

iconographer

Icon queuing, fetching and caching library
JavaScript
2
star
35

archive-sharing

Share archive configurations between applications
JavaScript
1
star
36

icon-proxy

Self-hosted website icon proxy for Buttercup
TypeScript
1
star
37

fetch

Fetch adapter for cross-platform use.
JavaScript
1
star
38

download-count

JavaScript
1
star
39

daemon

Browser extension helper daemon
Rust
1
star
40

facades

Editing facades for Buttercup vaults and content
JavaScript
1
star
41

buttercup-native-bindings

OS-specific bindings and daemons.
JavaScript
1
star
42

attachments

Manage vault attachments and media
1
star