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