Giter VIP home page Giter VIP logo

alpine's People

Contributors

avi5hek avatar ryan-conway avatar thiennguyen0196 avatar wadeewee avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

aolmez

alpine's Issues

[UI] Create screen to manually input the MRZ information

Why

When the MRZ information cannot be extracted from the image of the passport information page, the user can enter the information manually.

Acceptance Criteria

  • Create a simple screen having the following 3 editable fields:
    • Passport number
    • Date of Birth
    • Date of Expiry
  • Add a button below the fields with text Next.

Draft UI

Image

Notes:

  • No need to define any custom styles.
  • Keep the app's default toolbar.

As a user, I want to use Coroutines and Flow when processing a passport image

Why

Coroutines and Flow are popular ways to manage long running operations in Kotlin. We should support both of these methods when processing the MRZ

Acceptance Criteria

  • [Optional] Create a new interface for Coroutines and Flow to separate it from regular function
  • Add suspend function for processing an image file
  • Add flowable function for processing an image file

[Chore] Make models Parcelable

Why

To allow the app developers to pass the models around different screens, we need to make them Parcelable.

Acceptance Criteria

  • All the models must implement Parcelable.

As a user, I want to use Coroutines and Flow when reading NFC chips

Why

Coroutines and Flow are popular ways to manage long running operations in Kotlin. We should support both of these methods when reading the NFC chip

Acceptance Criteria

  • [Optional] Create a new interface for Coroutines and Flow to separate it from regular function
  • Add suspend function for reading an nfc tag
  • Add flowable function for reading an nfc tag

[Integrate] Create NFC scanning screen

Why

After the scanning of the MRZ information from the passport information page or manual input, the user navigates to this screen to press the back of the phone against the passport NFC chip to read the NFC data.

Acceptance Criteria

  • Toolbar title: Read NFC
  • Show an indefinite progress wheel while the NFC data is read and processed.
  • Once processed, hide progress and show the following information:
    • Name
    • Surname
    • Personal Number → ID
    • Gender
    • Birth Date
    • Expiry Date
    • Serial Number Passport Number
    • Nationality
    • Document Type → Passport | ID Card | Other
    • Issue Authority
    • Signature image (not present in the design, but we can add it below all the labels)

No need to have the buttons shown in the design.

Design

Image

[Chore] Bootstrap project

Why

Create a new project for the library.

Acceptance Criteria

  • Create a project containing an empty activity in the :app module.
  • Create an Android Library module - :lib.

[UI] Create main screen

Why

To navigate users to the camera screen to start scanning the MRZ or to the screen to manually enter the MRZ info, the main screen needs two buttons.

Acceptance Criteria

  • Add two buttons in the middle of the screen with the following texts respectively:
    • Start scanning MRZ
    • Enter MRZ info manually

[UI] Create NFC scanning screen

Why

After the scanning of the MRZ information from the passport information page or manual input, the user navigates to this screen to press the back of the phone against the passport NFC chip to read the NFC data.

Acceptance Criteria

  • Toolbar title: Read NFC
  • Show an indefinite progress wheel while the NFC data is read and processed.
  • Once processed, hide progress and show the following information (will be dealt with in the Integrate ticket):
    • Name
    • Surname
    • Personal Number → ID
    • Gender
    • Birth Date
    • Expiry Date
    • Serial Number Passport Number
    • Nationality
    • Document Type → Passport | ID Card | Other
    • Issue Authority
    • Signature image (not present in the design, but we can add it below all the labels)

No need to have the buttons shown in the design.

Design

Image

[Integrate] Create screen to manually input the MRZ information

Why

When the MRZ information cannot be extracted from the image of the passport information page, the user can enter the information manually.

Acceptance Criteria

  • Users can enter the following fields:
    • Passport number
    • Date of Birth
    • Date of Expiry
  • Clicking Next will take users to the NFC scanning screen with the information entered in the aforementioned fields.

Add description and setup instructions to README

Why

To help the developers use the library, we need the description and setup instructions on README.

Acceptance Criteria

The README should contain the following contents:

  • Description about the functionalities of the library.
  • Setup instructions.

As a user, I want to have live passport capturing on the camera

Why

Many apps that scan using the camera implement live tracking (For example, scanning PromptPay QR codes) rather than taking a photo and scanning after the fact

Acceptance Criteria

  • Create a class to process camera input live
  • update CameraCaptureActivity to use the new class

Useful resources

[Integrate] Create the camera screen to capture the passport information page containing the MRZ

Why

Implement the camera screen created in #5 to capture the passport information page containing the Machine Readable Zone (MRZ).

Acceptance Criteria

  • Capture the image.
  • Process the image to get the MRZ.
  • Display the MRZ information in a toast.
  • Once the processing is successful, navigate to the NFC scanning screen with the MRZ information.
  • If the processing fails, show a dialog with the following properties:
    • The message: Processing failed. Try again with the MRZ section of the passport clearly visible.
    • Buttons:
      • OK: pressing it will close the dialog.
      • Enter manually: pressing it will take the user to the manual MRZ input screen.

[Integrate] Create main screen

Why

Why

To navigate users to the camera screen to start scanning the MRZ or to the screen to manually enter the MRZ info, the main screen needs two buttons.

Acceptance Criteria

  • Add a button in the middle of the screen with text Start scanning MRZ.
  • Add a second button below the first one with text Enter MRZ info manually.
  • Clicking the top button will ask runtime permission to use the camera.
  • Allowing the permission will take users to the camera screen implemented in #5.
  • Denying will keep users on the same screen.
  • Clicking the bottom button will take users to the screen where they can manually enter the MRZ information (will be implemented in #11 ).

Convert Java code to Kotlin

Why

There is some util code in the project written in Java. We should convert them to Kotlin for consistency.

Acceptance Criteria

  • All the Java code should be converted to Kotlin.

[Chore] Add components to the :lib module

Why

Add all the necessary components to the :lib module.

Acceptance Criteria

  • Add the following dependencies:
"com.google.android.gms:play-services-mlkit-text-recognition:$latest_version",
"org.jmrtd:jmrtd:$latest_version",
"com.madgag.spongycastle:prov:$latest_version",
"edu.ucar:jj2000:$latest_version",
"com.github.mhshams:jnbis:$latest_version",
"net.sf.scuba:scuba-sc-android:$latest_version"
  • Add the following classes/interfaces/models:
    • MlKitWrapper and its implementation
    • NfcReader and its implementation
    • ImageUtil
    • Models:
      • MrzInfo
      • AdditionalDocumentDetails
      • AdditionalPersonDetails
      • DocumentType
      • Passportinfo
      • PersonDetails

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.