Permalink
Cannot retrieve contributors at this time
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?
Mobile-Project-Xamarin/README.md
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
60 lines (41 sloc)
2.59 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 | |