crypto dashboard

View Repository

An image of the application

What it is

This project is a web-based cryptocurrency application called "Crypto Dashboard". The purpose of this project was to develop a user-friendly platform to allow users to track popular information for the top 10 cryptocurrencies by market share. Information for each cryptocurrency includes price, market share, volume, 24-hour change, as well as background and technical information on the cryptocurrency projects themselves. Graphs that help visualize pricing trends are included for each cryptocurrency. The application also provides an example portfolio, which includes holdings, current value, and purchase activity for an example user.

How it's built

Backend

The backend of this project relies on two main AWS Lambda functions. The first lambda function fetches data from the CoinGecko API, combines the data, and the inserts it into the corresponding tables in the RDS MySQL database. The second lambda function handles the logic for the Amazon API Gateway which manages the client requests that come through Cloudfront.

A diagram of the application architecture

Front-end

The front-end of this project is built using React. It fetches the data from the database via the Amazon API Gateway endpoints. The front-end also fetches data directly from the CoinGecko API as well. Chakra-UI is used as the component library for this project.

An image of the holdings application page

An image of the price application page

Technologies

  • AWS Lambda: Two Lambda functions are used - the first fetches and inserts data into the database. The second handles the incoming client requests from the API gateway.
  • Amazon S3 Cloud Storage: The React front-end is statically hosted in an S3 bucket.
  • Amazon RDS for MySQL: The MySQL database stores the currency data.
  • Amazon Cloudfront CDN: Routes user requests and delivers content.
  • Amazon API Gateway: Purpose built REST API to allow clients access to the information stored in the database.
  • Amazon Route 53 DNS Service: Manages domain service for the project.
  • AWS Serverless Application Model: The AWS Serverless Application Model (AWS SAM) framework is used to help manage the serverless application logic.
  • Axios: HTTP client used in the front-end for fetching data from APIs.
  • Recharts: Charting library used to display currency information.
  • React: Front-end user interface library.
  • Knex.js: This is an SQL query builder used in the Node.js environments for the Lambda functions.
  • node.js: Javascript runtime environment used in Lambda function
  • Charka UI: UI component library used for styling.

Lessons learned

  • Buffer Time for Unexpected Issues: Unforeseen issues and roadblocks are inevitable in any development project. However, I learned the importance of incorporating buffer time into my project schedule to account for these unforeseen circumstances.
  • Continuous Learning: Throughout the project, I tried to embrace a continous learning mindset. I actively tried out new technologies and best practices, which helped me overcome technical challenges. I've always invested time in continous skill enhancement as I believe it is crucial to stay up-to-date with evolving development technologies. I will continue to allocate time for learning and professional development to strengthen my technical expertise and satisfy my life-long passion for learning.