GithubHelp home page GithubHelp logo

petermikitsh / myethereumapp Goto Github PK

View Code? Open in Web Editor NEW
18.0 3.0 1.0 1.1 MB

Web client for viewing data from the Etherscan API

Home Page: https://myethereum.app

License: MIT License

JavaScript 98.28% CSS 1.72%
crypto cryptocurrency ethereum etherscan-api zeit feathersjs now

myethereumapp's Introduction

✨ Demo Site: https://myethereum.app

myethereumapp

Build Status Coverage Status dependencies Status

Web client for viewing data from the Etherscan API.

Getting Started

This application requires a locally-running MySQL instance in development mode. By default, the application will attempt connecting to the following location: mysql://localhost:3306/etherscan-local. Once the MySQL server is available, run the following:

npm install
npm run db:migrate
npm start

Your browser will open when the bundle is ready.

Architecture, design decisions, etc

  • Server: NodeJS server using FeathersJS for quickly building REST and real-time APIs. Data is persisted in Google Cloud Platform's Cloud SQL service. Sequelize is used as the ORM and to manage the database table structure with migration scripts.

  • Client: Single-page React application, using Redux for state management. The Material Design React components used in this project were implemented by the author. These components were designed with a focus on performance, accessibility, and cross-browser support. Color palette and font choices inspired by the look-and-feel of the Apple Design Award winning Robinhood app. The following separation of concerns is applied:

    • The src/client/components directory contains React components primarily concerned with the DOM.

    • The src/client/routes directory contains React components that integrate with react-router and redux state management. No DOM-specific logic lives in this directory.

  • Testing: When shipping enterprise applications, you need confidence in quality. The unit tests provide extensive coverage of the codebase, allowing developers to add or augment existing features, without fear of introducing a regression. Unit tests are written with Jest for parallelized, fast execution.

  • Developer experience: If you want to move quickly, you need to be effectively utilizing developer tools. This project implements hot module reloading on both the client and server. When server code changes, the server is restarted. When client code changes, react-hot-loader patches them into the browser (no hard page refresh). Seeing is believing!

  • Automated deployments: Once unit tests and the build succeed, Travis automatically deploys the application to Zeit, a PaaS for NodeJS applications. The application is accessible at https://myethereum.app.

Out of scope

  • Locking down the API. In a true production environment, you'd want to rate limit requests, add pagination, and require authentication to reach the API endpoints.

  • Server-side rendering. If you look at the response from the server root (e.g., GET /), you'll notice the body is sparse, as the DOM is populated by React on the client. This can be less-than-ideal for SEO.

  • Simplified workflows. In this project, you'll see I've pushed commits directly to master. In enterprise environments with multiple collaborators, I usually follow a variation of the standard branching model, where features are built on a new branch.

myethereumapp's People

Contributors

petermikitsh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  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.