Skip to content

DoDutchAoA/Do-Dutch

Repository files navigation

Go Dutch Version 1.1

Introduction

Go Dutch is an Android application built on React Native. It can set you free from the tedious and error-prone experience of working out the money flow in a shared bill! A digital receipt which contains detailed information of a purchase will be generated after a purchase payer (receipt owner) scan their receipt. Payers can share this digital receipt with a specific group, and all members of this group become the sharers of this receipt. Depending on you are a purchase payer or receipt sharer, this application can help you to calculate how much you should receive and pay. Also, this application can keep track of payments for each receipt by showing the number of sharers who have confirmed their payments. Once sharers complete their payment to payers offline, sharers can confirm their payment on our app. A receipt is marked as completed once all sharers have confirmed their payment. That makes our application becomes a good tool to keep accounts!

This is the first "release" of our application. More features are coming on their ways!

User Interface

User-related

User sign up, log in and log out

Login Signup Logout

Friend and Group:

Friend Group information Group Chat

Receipt-related

Receipt History

history1 history1

Receipt Modal

modal1 modal2 modal2

Getting Started

Prerequisites

Making sure you have React Native CLI, SDK 8.1 (Oreo), npm equipped to run our application.

Installation

First clone our repository:

git clone https://github.com/DoDutchAoA/Do-Dutch.git

Install all dependencies:

npm install

Establish links to all dependencies:

react-native link

Running

By simply running Establish links to all dependencies:

react-native run-android

Tests

Unit Tests

We utilized Jest and Enzyme to test this application, and unittest to test our back-end database. All test script resides in here and here. To run test scripts for the front-end, you can run

npm test

Since you have no access to our database, you may not be able to run those tests for our back-end. But you can navigate to here and here to check out all test reports. Below is a coverage report generated when tests are ran locally.

alt text

CI server (Jenkins)

We successfully deployed tests to test our database code (implemented in Python) but failed to deploy our test for the mobile part (tested by Jest and Enzyme) on our CI server due to some reasons. Firstly, our server, an EC2 instance running under the Amazon free trial, only has less than 8GB disk space and limited RAM space. Currently, without installing any dependency to run tests for our mobile app, there is only nearly 2GB left. We are afraid that installing all dependency (including OpenSSL, nodejs, npm, react-cli, jest, enzyme and so on) would leave no room for our server to process requests from the front-end. Also, to run tests successfully requires some manual configurations, which we have not figured out how to achieve them by running a script on our CI server.

Even though we did not have our CI server configured, we still got the coverage report successfully shown on our CI server. The reason for that reports which can be read by the CI server is not necessarily generated by tests running on the CI server. So it reads reports we generated locally and pushed to the git repository. The report is shown below.

alt text

The reasons why the coverage rate is not so high is we did not cover all of UI rendering tests and some tests which will interact with our server directly.

Miscellaneous

Static analysis reports

Future work

Currently our application can be able to handle relatively simple logic. We will keep on developing more features to make "Go Dutch" more powerful!

About

No description, website, or topics provided.

Resources

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors