Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time

Mobile-Project-Xamarin

7052CEM Project

Project Description

This is a cryptocurrency wallet for Ethereum, 2nd Most Famous Cryptocurrency after Bitcoin. It allows the user to create a wallet from a mnemonic (a 12 words string) or access an HD wallet using a mnemonic the user already has. The app comes with a web server in Node.js for taking card transactions.

Layouts Description

The following type of layouts have been used in this project:

StackLayout
GridLayout
ListView
PancakeView (A custom layout from a custom library)
Tabbed Page Layout (for creating the tabs effect)

Layouts have been used to create a responsive mobile application that works & looks good on iOS & Android devices of different sizes.

Data Persistence

Different data persistence techniques have been used for storing data in this project:

Google Firebase Database (used for log-in & sign-up)
Local Database SQLITE (used to save user's preferences, images and a list)
Ethereum's Blockchain (used to retrieve all transaction & balance data of a user)
The Preferences class to store application preferences in a key/value store (used for firebase session control)

APIs used

This project uses different APIs to achieve its goals

Infura.io (for connecting to Ethereum's blockchain and reading data)
CoinGecko (to retrieve Ethereum's price in £GBP)
Firebase API (to sign-up and sign-in users)
Stripe API (To accept payments via credit or debit cards & tokenize transaction data)

Additional Information

WebServer folder contains a Node.js server that runs on localhost. The WebServer can be called by both iOS and Android devices and its entire purpose is to listen for Stripe transactions & send cryptocurrencies to the user on successful purchases.

WANT TO RUN THIS YOURSELF?

  1. Make sure you have Visual Studio with Xamarin, Android SDK & Node.js v10.15.3 or higher
  2. Get the following: Stripe's secret and public key, Infura API key, Etherscan API key
  3. Navigate to WebServer folder and run "npm install"
  4. In WebServer/App.js update const stripe = require("stripe")("STRIPE SECRET KEY"); to your stripe secret key
  5. In WebServer folder run node App.js. The server will be listening on port 8080 of your local Network address
  6. In Coursework/ViewModels update BuyCryptoViewModel.cs, SaveAddress.cs and AuthViewmodel.cs with your API keys
  7. In Coursework/Views update Account.xaml.cs with your API keys **
  8. In Coursework/ViewModels/BuyCryptoViewModel.cs update line 219 with your serverUrl. Don't change the route
  9. Run the application on the device