Git Product home page Git Product logo

coinbay's Introduction

CoinBay

Deployed at http://34.218.253.86/ (AWS)

Setup Instructions

  1. Run $ vagrant up
  2. Navigate to project dir ~/coinbay-web-app/
  3. In the root/client dir, run $ yarn install
  4. Do the same in root/server dir, run $ yarn install
  5. Back in root dir, run the initial data script $ ./resetdb.sh
  6. And now we can launch the app using $ yarn dev
  7. Open your browser and navigate to http://localhost:8000/ to view the CoinBay app
  8. You can register a new account or use a default user as listed below:
  • *Username: user1 (Password: user1)
  • *Username: user2 (Password: user2)
    • *These accounts will have some postings assigned to their account so that you can immediately view and use functionality within the profile dashboard

Transaction Workflow

Follow the steps listed below for setting up and testing the transaction (escrow) process

Features (End-User)

Database keyword search

  • Reactive search results/suggestions for top 100 relevant postings
  • Can search by “user” or “title” depending on dropdown selection (bottom-right of search)

Sorting

  • Filter by date (ascending/descending)
  • Filter by price (high/low)
  • Filter by title (A-Z/ Z-A)

Categorical Filtering

  • Fully responsive layout with ability to expand/collapse drawer for smaller screen sizes

Marketplace Layouts

  • Grid, Detailed-List, and List views

Google Maps API

  • Integration with the API allows users to pin a location on a map during posting creation
  • Known issue: The Google Map API for React component currently does not properly save the user’s location after posting is saved
  • Future work: include a search bar

Using Imgur API

  • Allow users to upload an image file for their posting; imgur handles the upload, hosting, and URL creation which is later referenced in the posting details

Posting CRUD

  • Full suite of functionality pertaining to postings in the marketplace (some features require you to be an owner of the posting)
  • There is an image size constraint for non-animated images (i.e. JPG, PNG, etc) is 20MB, anything larger will not be permitted during posting creation

Lazy Loading

  • Scrolling to bottom of the page triggers a fetch to load more posts

Features (Back-end)

Session Tokens

  • Session handling fully implemented using JWT (Json Web Tokens)
  • User sessions means improved security and usability

Secure Endpoints

  • Fully secured endpoints removes potential for unauthorized access

Fake Data Generation

  • Using Faker API to generate customizeable (fake) data for various components/fields (e.g. Title, User, Reviews, Description, Address, Phone Number, etc.)
  • Populated through Sequelize seed files
  • Default generation is 1000 users and 1000 posts, can be easily modified with a variable change (must remain 1:1 in the file)

Ethereum Smart-Contract Integration for Escrow Transactions

  • Buy Now button will not work without MetaMask Extension
  • Integrated with MetaMask, which is a Chrome extension that allows users to interface with the Ethereum - Blockchain without hosting a full node.
  • Wallet balance on top right fetched from Metamask
  • Can be used as an escrow through Smart Contracts
  • Connected to Ropsten Testnet, identical to Mainnet except with fake money
  • Transactions are done through Smart Contracts
  • When a user clicks “buy now” the item will be “unavailable”
  • Can view the Ethereum transaction on Ropsten’s Etherscan
  • All transaction scenarios accounted for:
    • Both users accept transaction, Ether is sent from the contract to the seller
    • Both users decline transaction, Ether is returned from the smart contract to the buyer
    • One user declines, If there is conflict where one user accepts and one user declines the transaction, a third party or administrator will be referred to to resolve potential conflicts
  • We keep a full history of all transactions performed on our web app Ethereum Wallet Balance in the NavBar is updated live when a user switches wallets or completes a transaction

Videos (Screen Recordings)

Searching & Registration Workflow:

CRUD Postings Workflow:

##Transaction Workflow:

coinbay's People

Contributors

vinsonly avatar jlncheung avatar gregbaker avatar chrisk123 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.