Steps to setup the development server:

Clone this repo  and CD into it
npm i
npm run dev

Few highlights :

  • Used Container-view model architecture: Each component is divided into two sub-components; one is responsible for rendering UI, and the other for component business logic. It provides us with a separation of concerns.

  • SCSS - support CSS variables and mixins + BEM methodology

  • Custom hooks: Created a CopyToClipboard custom hook to extend copy functionality to any component.

  • Constants: Created a constants file to support a single source of truth across files.

  • Context: Created an app context to store various app states like pagination and coins.

  • Services: So each entity has its SDK kind of classes. Like coin-related tasks are enclosed into a single category to improve code readability and extensibility.