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.
The following type of layouts have been used in this project:
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.
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)
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)
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?
- Make sure you have Visual Studio with Xamarin, Android SDK & Node.js v10.15.3 or higher
- Get the following: Stripe's secret and public key, Infura API key, Etherscan API key
- Navigate to WebServer folder and run "npm install"
- In WebServer/App.js update const stripe = require("stripe")("STRIPE SECRET KEY"); to your stripe secret key
- In WebServer folder run node App.js. The server will be listening on port 8080 of your local Network address
- In Coursework/ViewModels update BuyCryptoViewModel.cs, SaveAddress.cs and AuthViewmodel.cs with your API keys
- In Coursework/Views update Account.xaml.cs with your API keys **
- In Coursework/ViewModels/BuyCryptoViewModel.cs update line 219 with your serverUrl. Don't change the route
- Run the application on the device