Giter Site home page Giter Site logo

deposit-app's Introduction

EmpowerChain

This is where the code for anything related to EmpowerChain is located. Documentation is being built right now.

In the meantime, take a look at our whitepaper, website and @empowerchain_io on twitter.

./chain

In the chain folder is where the actual blockchain-code is located.

./docs

In the docs folder you will find the documentation and doc site for https://docs.empowerchain.io

deposit-app's People

Contributors

gjermundgaraba avatar iam-agf avatar

Watchers

 avatar  avatar

Forkers

iam-agf

deposit-app's Issues

iOS Version

Make sure we can build and deliver an iOS version

Interface for Transportation companies

UI OesteCIM voucher example
An interface/website, like the one above, should be provided for the transportation companies to mark the vouchers generated by the RVM machines, redeemed by people WITHOUT the deposit app, as used. The goal here is to avoid fraud, help them invoice OesteCIM for the vouchers and have them as proof for accounting.

Open Voucher

  • Enable the "Check" button on vouchers
  • Create a new page to show the code of the voucher

Image

New storage for Token with private key

Currently the token is stored in shared preferences, but requires a safer place to be stored. This issue is to keep in mind looking for that other option and add it to the current app.

Set up Flutter CI/CD build GH action

Depends on #2

Create a GitHub Action Workflow with the following jobs:

  • test
    • This should check out the code and run tests (unit and integration tests)
  • build
    • This should check out the code, build an APK file and upload it GitHub artifacts

The workflow should trigger on:

  • workflow_dispatch
  • push

Account tab

This is an epic to track the work to be done under the initial account tab for the MVP.

Implement login

Implement login using Web3Auth.

  • When the app opens, check if the user is logged in

    • If yes: go to the main screen
    • If no: open the login screen stuff
  • Make sure the logged in user credentials are persisted between app-opens (You need this also for the check from the previous step)

    • This might be built-in with Web3Auth ๐Ÿคž
  • It should be possible to log in with:

  • Email (Passwordless)

  • Social (Google, Facebook, Twitter, Discord)

  • Seed phrase (Create and import)

Set up account tab UI

Create the UI for the account tab.

  • Get the account address and display it
  • Set up the rest of the UI as well
  • Do not implement any of the buttons

Image

Login

Epic to track login for the deposit app.

We've decided to use web3auth as the primary login method.

Claim deposit from collection point

Depends on

The QR Code

The QR code generation is currently implemented in the Tracking App on the Empower Platform.
The QR code is essentially an ID that links to an unclaimed deposit.

Example QR code:
Screenshot from 2022-08-11 18-48-43

Format:

claim_code=rjhf8WTP

Claiming

  • Add a button to the Deposit tab that says "Claim Deposit Reward"
  • Clicking the button should open a QR Code reader camera
  • Read the QR code and parse out the claim_code into a separate variable (in the example above, it would be rjhf8WTP
  • Send the claim_code and the users public key to the deposit backend using the deposit.Claim API
    • If the request fails, show the error message coming from the backend
  • Show the success page

Image

Mark Voucher as used

  • Add button to mark Voucher as used. This should be done using an the deposit.InvalidateVoucher API
  • Use a confirm dialog to ask the user if they are sure they want to mark the voucher as used
  • After success from API we can fetch the info again and it should show as "used"

Image

Add name and email field to account page

Depends on:

To share personal information with an organization, we need to give the user a safe way to do so. The solution outlined here should allow the information to be shared only with the organization the user wants to share it with. This is done by encrypting the personal information with the organization's public key so that the only entity that can decrypt the data is the holder of the private key (i.e. the organization).

Encryption is to be done with RSA asymmetric keys. Support for this already exists on the backend (an organization will always have a public encryption key). The app only needs to encrypt the personal information and send it to backend on the new API (see 'Depends on').

  • Add new button "My Profile" (See design below)
  • Add new screen for editing "My profile" with "First name", "Last name" and "Email". Saving is only done on device (no data is sent to any backend, just persisted in some kind of local storage).
  • Add "SHARE" button on the "My Profile" page
  • Add new screen for sharing data
    • Dropdown to select organization using User Organizations API
    • Checkbox to select with profile fields to share (First name, last name, email)
    • Button share using the Share API
  • Encrypt the users data with the organizations public encryption key
  • Upload the users data using the API from empowerchain/deposit-backend#15

Designs:
image
image
image
image

Set up Wallet UI

Do not implement any functionality yet, just create the basic UI needed

Image

Website Version

While the App is not available on the app stores, there should be an easy way for all users to use the app, not only android.
A website version, like Empower Platform, should be provided to help with app awareness in this first stage.

Voucher list

Depends on

Creating the page to view all vouchers

  • Enable the "My Vouchers" button in the wallet Tab to take to a new page

  • Fetch vouchers from the deposit.GetVouchersForUser API

  • The list should be "infinite scrollable", see API for pagination

  • No need to implement the "Check" link yet, that is done in #16

Image

Add app icon

Add app icon.

The following image should be a 1024x1024 version you can create from. Make sure all the correct sizes are created (for iOS, etc)

Image

  • Android
  • iOS

Set up Flutter project

This task is for setting up the initial Flutter project.

Make sure to split up the work in commits so that the Pull Request has commits for:

  • Initial "empty/new" flutter project
  • Barebones UI (see screens below - Do not implement any login or functionality)

Splash screen
Implement a splash screen when starting the app
Image

Main UI:
Implement a Tab UI with the three tabs shown here:
Image

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.