Giter Site home page Giter Site logo

martinloesethjensen / flutter_algo_wallet Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 0.0 368 KB

Exam Project: Using Flutter in the development of an Algorand wallet

Home Page: https://martinloesethjensen.github.io/flutter_algo_wallet/

Kotlin 0.22% Swift 2.25% Objective-C 0.06% Dart 90.63% HTML 2.48% Ruby 4.36%
unit-testing widget-testing github-actions flutter provider algorand algorand-blockchain wallet blockchain-demos dart dartlang

flutter_algo_wallet's Introduction

flutter_algo_wallet

Blockchain has over the past decade evolved from being simply relegated to Bitcoin, to flourishing into a vast financial network with many different utilities and use cases. One such example is Algorand, which we combine with Google’s new experimental cross-development platform, Flutter. We aim to make an application targeted towards Android and iOS devices with features that would enable a user to create & import wallet(s), as well as use it to send and receive tokens. The broader point is to come to a conclusion in which we arrive with a newfound knowledge of TDD (test-driven development) and testing for specifically emerging technologies, with a smaller focus on fintech applications.

Getting Started

Clone the repo and fetch the pubs in the folder.

git clone https://github.com/martinloesethjensen/flutter_algo_wallet.git
cd flutter_algo_wallet
flutter pub get

Installing and Running Algorand Node

Links to get started with installing and running an Algorand node locally:

Running the App

You need Flutter on your computer and have a device connected.

The device can also be a simulator, emulator, desktop app (if you run macOS).

To see what devices are running use this command: flutter devices

Find out more by running:

flutter run

flutter_algo_wallet's People

Contributors

martinloesethjensen avatar redrocket94 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

flutter_algo_wallet's Issues

Import an existing wallet

Estimated hours: 10h
Used hours: 0h

Info

As a user, I would like to import an existing wallet.

Pre-reqs

  • The app needs to be connected to a node to perform an Algorand account creation.
  • An existing wallet
    • Mnemonic seed phrase is used for it.
    • TODO: "<SEED_PHRASE>"

Post conditions

Should have an account to send and receive funds.

Testing

Unit testing:

  • Fetching wallet from existing seed phrase

UI testing:

  • Screen with "Import wallet" button
  • Navigates to "Dashboard" screen

Acceptance Criteria

  • Should be able to import an existing wallet
  • Show an error if no wallet exists
  • Navigate to next screen if an import is successful

Profile Screen

Estimated hours: 7h
Used hours: 6h

Info

As a user, I should be able to easily copy and see my public address and seed phrase.

I would also want to have access to a faucet, so I can get some test tokens for my account.

Post conditions

  • Account seed phrase.
  • Account public address.
  • Button that links to algorand faucet to get test tokens.

Testing

Unit testing:

  • Mock creating an account

UI testing:

  • Show profile tab
  • Show account public address
  • Show account seed phrase
  • Show faucet button

Acceptance Criteria

  • Account public address and seed phrase is visible
  • Account public address can be copied to the clipboard
  • Account seed phrase can be copied to the clipboard
  • Algorand faucet button

Create new account

Info

As a user, I would like to create a new wallet.
With a wallet, I should have an account to receive and add funds to.

Pre-reqs

  • The app needs to be connected to a node to perform an Algorand account creation.

Post conditions

Account should be created with an address and mnemonic seed phrase.

Testing

Unit testing:

  • Account creation (address and seed)

UI testing:

  • Screen that has a “Create new wallet” button
  • Navigates to a “Dashboard” screen

Show wallet balance

Estimated hours: 20h
Used hours: 0h

Info

We want to show the balance of an asset in the wallet.

Post conditions

Balance is shown for asset

Testing

Unit testing:

  • Mock fetching balance from an account

UI testing:

  • Dashboard screen that shows wallet balance for the asset

Acceptance Criteria

  • Have a screen that shows the balance of your wallet

Receive tokens

Estimated hours: 20h
Used hours: 0h

Info

As a user, I should be able to easily copy my address and show a QR code for others to scan.

Post conditions

  • QR code to receive tokens.
  • Account address that can be copied.

Testing

Unit testing:

  • Mock receiving tokens from a different address
  • Mock copy of own address to clipboard if possible
  • Mock that it can paste address from the clipboard if possible

UI testing:

  • Show QR code with own address as the data
  • Show address as text underneath the QR code.
  • Have a copy button that copies the account address so that it can be shared.

Acceptance Criteria

  • Show a "deposit" button that opens a modal with QR code and own account address
  • Account address can be copied to the clipboard

Connect to node

Estimated hours: 10h
Used hours: 8h

Info

We need to be connected to a node before we can use the app.

Post conditions

Access to the node.

Testing

Unit testing:

  • Mock successful connection to node
  • Mock unsuccessful connection to node
  • Mock AlgorandExpection

UI testing:

  • Have loader shown when the app awaits node connection
  • Show screen with "No connection" text, when there is no node connection
  • Navigates to screen with import and create wallet buttons, when there's node connection

Acceptance Criteria

  • Shows screen with no connect if AlgorandException is thrown
  • Shows normal screen if there's a connection to a node

Navigation tab

Estimated hours: 5h
Used hours: 19h

Info

As a user, I would like to have a navigation tab to easily navigate between screens.

Post conditions

Navigation tab.

Testing

Unit testing:

  • Mock tab change

UI testing:

  • Mock tab change

Acceptance Criteria

  • Have a navigation tab

Transfer tokens to address

Estimated hours: 20h
Used hours: 0h

Info

As a user, I would like to send tokens to an address.
I would like to have the option to scan a QR code if I'm on mobile.

It's good to note that we can't really check if an address exists or not.

Pre-reqs

  • The app needs to be connected to a node to perform an Algorand account creation.
  • Using an existing wallet.

Post conditions

The user can input the address and amount of tokens to send.
If on mobile then it should also be an option to scan QR code and autofill address.

Testing

Unit testing:

TODO: Check if we can mock transfer with unit tests

  • Token transfer should not exceed the available amount

UI testing:

  • Transfer screen
  • Has input field for address
  • Has input field for amount
  • Has scan button (for QR scanning)
  • Has "Send" button

Acceptance Criteria

  • Can transfer tokens to address
  • On mobile the option for scanning a QR code should be available and autofill address input field.
  • Can specify the number of tokens to transfer

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.