Screen Shot 2018-09-12 at 9.06.25 PM.png

Blockchain / Cryptocurrency Understanding

Github Repository

Objective

To create blockchain functionality and unit tests in order to understand functionality and behavior of blockchain for peer-to-peer servers.

Approach

Follow online learning course to take me through the basics of learning a basic understanding of blockchain and how the decentralized ledger is ideal for maintaining cryptocurrencies.

Accomplishments/Tasks Completed

  • Unit tests for each new function or class

  • Block class with constructor containing, timestamp, lastHash, current hash, data and (later) nonce

  • Blockchain class allowing new blocks to be added, but validated (checks to ensure genesis block, if last blocks are the same), allows chain to be replaced if the received chain is not longer than the current chain

  • Set up API for GET and POST for new blocks (using Postman as interface)

  • Set up peer-to-peer servers, allowing peers to contribute to the decentralized blockchain (given the classes in place)

  • Add in Difficulty and nonce (number only used once) attribute for mining purposes - keeping the blockchain safe from being hacked

  • Added ability for difficulty to adjust to number of miners (comparing time between blocks added timestamps)

  • Create Wallet class for cryptocurrency

  • Create a Transaction class for... transactions

  • Allow transactions to have multiple outputs/be updated

  • Create transaction pool for multiple users to submit new blocks

  • Calculate accurate wallet balances after transactions take place

TECH STACK

node.png
  • Node.js

  • Express (framework)

  • Jest (unit testing)

  • Postman (used to interact with API endpoints)

  • Additional Node Packages/Libraries:

    • crypto-js (library of cryptography standards)

    • body-parser (parsing middleware)

    • ws (web sockets! For peer-to-peer server connectivity/updating)

    • elliptic (provides private, public key generation for cryptocurrency)

    • uuid (for the creation of unique transaction IDs)


Screen Shot 2018-09-12 at 8.42.29 PM.png

What is it?

FLEX is a single page, mobile first we app that allows users to find gym buddies! Users can answer a few quick questions, including their gym location and workout buddy preferences and find others nearby who are looking to make friends and help each other stay accountable.

What problem is it solving?

FLEX allows users to find gym buddies! Users can answer a few quick quesitons, including their gym location and workout buddy preferences and find others nearby who are looking to make friends and help each other stay accountable.

Screen Shot 2018-09-12 at 8.45.05 PM.png

Once you are able to search for "flex-mates," you can send a request to connect as friends and start texting with each other!

Features

  • Seach for locaitons using built in Google Maps search box

  • Build a profile outlining your health goals

  • Upload profile photos

  • Enter preferences and filter

  • Peruse matching profiles

  • Send a friend request with someone you want to work out with

  • Once you're connected, start texting

 Create a profile!

Create a profile!

 Search for and add your gym.

Search for and add your gym.

 Search for gym buddies, AKA “flex-mates”.

Search for gym buddies, AKA “flex-mates”.

Tech Stack

FLEX is a mobile first app using the following technologies:

Screen Shot 2018-09-12 at 8.43.04 PM.png
  • HTML/CSS

  • JavaScript (AJAX/JQuery)

  • Ruby

  • Rails (framework)

  • Heroku (server hosting)

  • Circle CI (continuous deployment)

  • Google Maps API (location)

  • Twilio API (texting)

  • Amazon Web Services (hosting profile pictures)

  • Devise Gem (registration/security)

  • Paperclip Gem (adding photos)