diff --git a/.DS_Store b/.DS_Store
new file mode 100644
index 00000000..5008ddfc
Binary files /dev/null and b/.DS_Store differ
diff --git a/.gitignore b/.gitignore
index 58917fb6..ea8ad42a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,34 +1,21 @@
-# Logs
-logs
-*.log
+# See https://help.github.com/ignore-files/ for more about ignoring files.
-# Runtime data
-pids
-*.pid
-*.seed
+# dependencies
+node_modules/
-# Directory for instrumented libs generated by jscoverage/JSCover
-lib-cov
+# testing
+*/coverage
-# Coverage directory used by tools like istanbul
-coverage
+# production
+*/build
-# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
-.grunt
+# misc
+*/.DS_Store
+*/.env.local
+*/.env.development.local
+*/.env.test.local
+*/.env.production.local
-# node-waf configuration
-.lock-wscript
-
-# Compiled binary addons (http://nodejs.org/api/addons.html)
-build/Release
-
-# Dependency directory
-# https://docs.npmjs.com/cli/shrinkwrap#caveats
-node_modules
-
-# Debug log from npm
-npm-debug.log
-
-# Sensitive info
-.env
-certs/*.pem
+*/npm-debug.log*
+*/yarn-debug.log*
+*/yarn-error.log*
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..ed94f44b
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,3 @@
+{
+ "git.ignoreLimitWarning": true
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 1f3e331e..867e3f25 100644
--- a/README.md
+++ b/README.md
@@ -1,114 +1,5 @@
-# Baaaes đź’“
+# Wallet-Cryptorial
+Wallet-Cryptorial
-**Baaaes** is an opinionated, fully fleshed-out API server boilerplate based on [ExpressJS](http://expressjs.com) and [Sequelize](http://sequelizejs.com) with working examples and tests - you just have to jump in and modify it to your needs. It makes extensive use of `async`/`await` to eliminate callback hell _completely_ and make Javascript your bae.
-## TL;DR HOWTO
-
-1. Download the [zip package](https://github.com/fzero/baaaes/archive/master.zip) and unzip it somewhere (cloning is **not** recommended for normal use)
-2. Run `npm install`
-3. Copy `.env.example` to `.env` and add your Postgres DB configuration
-4. If you need HTTPS support, run `npm run makecert`
-
-You should be ready to go now! Start the server with `npm start` and run tests with `npm test`.
-
-
-## How & why?
-
-The basic code was created with [`express-generator`](https://expressjs.com/en/starter/generator.html), then the following changes were made:
-
-* Complete conversion to native Node ES6 syntax.
-* HTTPS support included, and you can generate self-signed certificates for development by running `npm run makecert`. Note that you **will** see warning messages; use [Let's encrypt](https://letsencrypt.org/) and a real domain name to avoid this.
-* [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) support baked in with configuration examples.
-* Differentiated environments (`development`, `test` and `production`) defined by the `APP_ENV` environment variable.
-* [Handlebars](http://handlebarsjs.com/) templates for HTML views.
-* [Sequelize](http://sequelizejs.com) as ORM, along with an example model implementation making extensive use of the `async`/`await` pattern to minimize frustration.
-* Example API routes _with fully working RESTful CRUD endpoints_, also using `async`/`await`!
-* [Mocha](http://mochajs.org/) integration tests for the example API. And guess what? We're using `async`/`await` for that too!
-
-
-## Making Express great again with `async`/`await`
-
-Let's face it, working with databases in Node has always been frustrating (to say the least). Node 7 introduces native support for `async`/`await`, which is nothing more than syntatic sugar on top of the Promise pattern. This means that **if your code uses promises, you can use `async`/`await` right now!**
-
-So instead of writing an API route like this...
-
-```js
-// GET /products
-// Returns a JSON array containing all available product objects
-router.get('/', (req, res) => {
- models.Product.findAll()
- .then((result) => {
- res.json(result)
- })
- .catch((error) => {
- res.status(400).json(error)
- })
-})
-```
-
-...you can write this instead!
-
-```js
-router.get('/', async (req, res) => {
- try {
- res.json(await models.Product.findAll())
- }
- catch(error) {
- res.status(400).json(error)
- }
-})
-```
-
-Note how you can use `try`/`catch` for async error handling - and YES, IT WORKS! đź’“
-
-
-## External dependencies
-
-**Baaaes** expects a Postgres database up and running, but you can modify the code to use any other database supported by Sequelize. You'll have to install the corresponding `npm` packages and modify the `.env` file. [Relevant documentation here.](http://docs.sequelizejs.com/en/v3/docs/getting-started/)
-
-Out of the box, **Baaaes** uses URI-style configuration for database connections, but you can use as many environment variables as you want (e.g. `DB_USER`, `DB_PASS`, `DB_HOST` and so on). **Just make sure to keep you test database separated; all data is destroyed every time the test suite runs!**
-
-
-## Note about boilerplates in general
-
-The objective of Baaaes is **not** to prescribe how you should organize your project, but showing **one** particular way to do it (hence _opinionated_).
-
- If you already know what you're doing, you can configure Express, Sequelize, Knex, Mongo and whatever else you're using however you want. Still, it can be useful to take a peek at some of this code to inform your decisions.
-
-This is one of the reasons I've decided against making Baaaes into a code generation package (such as `express-generator`). The other reason is it would be too much like creating yet another Javascript framework, and **NOBODY** wants that.
-
-**NOBODY.**
-
-
-## To do
-
-* Authentication middleware example
-* [JWT](https://jwt.io/) example
-* Bake in Let's Encrypt
-* Example NGINX configuration
-* Clustering
-* HTTP/2
-* Koa version
-
-
-## MIT License
-
-Copyright (c) 2017 Fabio Neves
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
+How-to make a Cryptocurrency Wallet!
diff --git a/_config.yml b/_config.yml
new file mode 100644
index 00000000..c7418817
--- /dev/null
+++ b/_config.yml
@@ -0,0 +1 @@
+theme: jekyll-theme-slate
\ No newline at end of file
diff --git a/api/products.js b/api/products.js
deleted file mode 100644
index f78e9140..00000000
--- a/api/products.js
+++ /dev/null
@@ -1,133 +0,0 @@
-const express = require('express')
-const errors = require('../lib/errors')
-const router = express.Router()
-
-/////////
-// Support functions
-/////////
-
-// Clean up JSON inputs so we only have the data we want
-// Never trust the internet
-const sanitizeProduct = (body) => {
- return {
- name: body.name,
- price: Number(body.price).toFixed(2),
- quantity: Number(body.quantity)
- }
-}
-
-
-/////////
-// Routes
-/////////
-
-/*
-API routes loosely follow the JSON API spec:
-http://jsonapi.org
-
-Successful requests should always include a "data" key.
-If something goes wrong, an "errors" array of objects must be provided.
-At the very least, each error must have a `message` key (Sequelize errors
-already look like this, so we're good on validation errors!).
-I've decided NOT to implement everything on the spec to keep this example as
-lightweight as possible.
-
-Additional status information is provided by HTTP status codes, as The Internet
-Gods intended.
-*/
-
-// models is an object containing all loaded Sequelize models
-// See models/index.js
-module.exports = (models) => {
-
- // GET /products
- // Returns a JSON array containing all available product objects
- router.get('/', async (req, res) => {
- try {
- let result = await models.Product.findAll()
- res.json({data: result})
- }
- catch(error) {
- res.status(400).json(errors.normalize(error))
- }
- })
-
-
- // GET /products/:id
- // Returns a single product JSON object
- router.get('/:id', async (req, res) => {
- try {
- let result = await models.Product.findById(req.params.id)
- if (!result) {
- res.status(404).json(
- errors.normalize(`Product id=${req.params.id} not found`)
- )
- return
- }
- res.json({data: result})
- }
- catch(error) {
- res.status(400).json(errors.normalize(error))
- }
- })
-
-
- // POST /products
- // Inserts a new product from a JSON object
- // Returns the inserted product JSON object
- router.post('/', async (req, res) => {
- try {
- let result = await models.Product.create(sanitizeProduct(req.body))
- res.status(201).json({data: result.get({plain: true})})
- }
- catch(error) {
- res.status(400).json(errors.normalize(error))
- }
- })
-
-
- // PUT /products/:id
- // Updates a product from a JSON object
- // Returns the updated product JSON object
- router.put('/:id', async (req, res) => {
- let product = await models.Product.findById(req.params.id)
- if (!product) {
- res.status(404).json(
- errors.normalize(`Product id=${req.params.id} not found`)
- )
- return
- }
-
- try {
- let result = await product.update(sanitizeProduct(req.body))
- res.json({data: result.get({plain: true})})
- }
- catch(error) {
- res.status(400).json(errors.normalize(error))
- }
- })
-
-
- // DELETE /products/:id
- // Deletes a product by ID
- // Returns the deleted product JSON object
- router.delete('/:id', async (req, res) => {
- let product = await models.Product.findById(req.params.id)
- if (!product) {
- res.status(404).json(
- errors.normalize(`Product id=${req.params.id} not found`)
- )
- return
- }
-
- try {
- let result = await product.destroy()
- res.json({data: product})
- }
- catch(error) {
- res.status(400).json(errors.normalize(error))
- }
- })
-
- return router
-}
diff --git a/app.js b/app.js
deleted file mode 100644
index f4c5e3e2..00000000
--- a/app.js
+++ /dev/null
@@ -1,100 +0,0 @@
-// Bluebird promises are stil faster than native, so we load it at the top
-// and immediately score a performance win, including async/await.
-// Crazy, I know.
-global.Promise = require('bluebird')
-
-// Load configs from .env, if present
-const dotenv = require('dotenv').config()
-
-// Require everything else
-const express = require('express')
-const cors = require('cors')
-const path = require('path')
-const favicon = require('serve-favicon')
-const logger = require('morgan')
-const cookieParser = require('cookie-parser')
-const bodyParser = require('body-parser')
-const Sequelize = require('sequelize')
-
-// Initialize Express
-let app = express()
-
-// Set environment
-app.set('env', process.env['APP_ENV'] || 'development')
-
-// Initialize database connection
-// Note that we only log SQL activity in development mode
-const dbURL = (app.settings.env === 'test') ? process.env.TEST_DB_URL : process.env.DB_URL
-const dbLog = (app.settings.env === 'development') ? console.log : false
-const sequelize = new Sequelize(dbURL, {logging: dbLog})
-
-// Load Sequelize models. See models/index.js
-const models = require('./models')(sequelize)
-
-// Synchronize schemas on launch (development mode only)
-if (app.settings.env === 'development') models.syncAll()
-
-// Enabling CORS
-// More info: https://github.com/expressjs/cors
-let corsOptions = {}
-if (app.settings.env === 'production') {
- // Configuration in production mode should be per domain!
- const corsWhitelist = ['http://example1.com', 'https://example2.com']
- corsOptions = {
- origin: (origin, callback) => {
- if (corsWhitelist.indexOf(origin) !== -1) callback(null, true)
- else callback(new Error('Not allowed by CORS'))
- }
- }
-}
-app.use(cors(corsOptions))
-app.options('*', cors(corsOptions))
-
-// View engine setup (HTML views)
-app.set('views', path.join(__dirname, 'views'))
-app.set('view engine', 'hbs')
-
-// HTTP Request logging (disabled in test mode)
-if (app.settings.env !== 'test') {
- const loggerType = app.settings.env == 'production' ? 'common' : 'dev'
- app.use(logger(loggerType))
-}
-
-// Parser middleware: cookies, forms and JSON
-app.use(bodyParser.json())
-app.use(bodyParser.urlencoded({ extended: false }))
-app.use(cookieParser())
-
-// Favicon: Uncomment after placing your favicon in /public
-//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')))
-
-// Serve static content from /public
-app.use(express.static(path.join(__dirname, 'public')))
-
-// Web routes
-app.use('/', require('./web/index')(models))
-
-// API routes
-app.use('/products', require('./api/products')(models))
-
-// catch 404 and forward to error handler
-app.use((req, res, next) => {
- let err = new Error('Not Found')
- err.status = 404
- next(err)
-})
-
-// error handler
-app.use((err, req, res, next) => {
- // set locals, only providing error in development
- res.locals.message = err.message
- res.locals.error = req.app.get('env') === 'development' ? err : {}
-
- // render the error page
- res.status(err.status || 500)
- res.render('error')
-})
-
-console.log(`Running in ${app.settings.env} mode.`)
-
-module.exports = app
diff --git a/client/README.md b/client/README.md
new file mode 100644
index 00000000..5bbfc5f6
--- /dev/null
+++ b/client/README.md
@@ -0,0 +1,2486 @@
+This project was bootstrapped with [Create React App](https://github.com/facebookincubator/create-react-app).
+
+Below you will find some information on how to perform common tasks.
+You can find the most recent version of this guide [here](https://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md).
+
+## Table of Contents
+
+- [Updating to New Releases](#updating-to-new-releases)
+- [Sending Feedback](#sending-feedback)
+- [Folder Structure](#folder-structure)
+- [Available Scripts](#available-scripts)
+ - [npm start](#npm-start)
+ - [npm test](#npm-test)
+ - [npm run build](#npm-run-build)
+ - [npm run eject](#npm-run-eject)
+- [Supported Browsers](#supported-browsers)
+- [Supported Language Features and Polyfills](#supported-language-features-and-polyfills)
+- [Syntax Highlighting in the Editor](#syntax-highlighting-in-the-editor)
+- [Displaying Lint Output in the Editor](#displaying-lint-output-in-the-editor)
+- [Debugging in the Editor](#debugging-in-the-editor)
+- [Formatting Code Automatically](#formatting-code-automatically)
+- [Changing the Page `