cloudlockr / cloudlockr-app

React Native Android app facilitating the user interface for the CloudLockr device featuring bluetooth communication, location services, API integration, file reconstruction, and user management
2 stars 1 forks source link
android-app axios bluetooth javascript jest react-native redux

CloudLockr — React Native Android App

Project Overview

CloudLockr is an innovative data storage system, tieing your digital data to a physical location while providing secure remote backup storage. The five strong layers of protection CloudLockr offers ensures your data is never compromised or read by anyone else, including us.

This repo contains the Android application facilitating the CloudLockr device user interface. This codebase features custom bluetooth communication protocols, location services, API integration, file reconstruction, and user management.

Demo (note: lower visual quality and FPS than actual):

Screenshots

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4

Main Technologies


Execution Details

Project Setup Requirements

How to Simulate on an Android Virtual Device (AVD)

  1. Execute yarn install (if you have not already)
  2. In a terminal window in the project root directory, execute yarn start
    • This will start the React Native Metro server
  3. In a different terminal window also in the project root directory, execute yarn android
    • This will launch an AVD (assuming you already have one configured and installed) and build and load the app onto it

How to Simulate on a Real Android Device

  1. Execute yarn install (if you have not already)
  2. Connect your Android device to your computer
  3. In a terminal window in the project root directory, execute yarn start
    • This will start the React Native Metro server
  4. In a different terminal window also in the project root directory, execute yarn android
    • This will build and load the app onto the phone

Running Tests

Execute yarn test to run the entire test suite (UI and service logic tests). Verbose results are enabled by default for result clarity.

General Execution Notes


Technical Details

Directory Structure

Note that throughout the project @/ is used in import statements and translates to src (to enhance code readability). Also note that index.js files are used throughout the project to simplify imports and provide a defined interface to a given directory. The general concept of the directory structure is to separate logic from UI components, enhancing testability and modularity.

Other Details