A fullstack JS crypto exchange app for the web.
https://github.com/JRobuschi/DEVCOIN
Tool | Used to |
---|---|
β React | Creating the UI with state based components |
β Vite | Bootstraping the project in the most modern and efficient way |
β TailwindCSS | Style the components based on utility-first classes |
β Firebase | Upload and retrieve profile pictures |
β Axios | HTTP requests |
β Browser Image Compression | Compressing images before uploading |
β Chart.JS | Display cryptocurrencies data inside a chart |
β Moment.JS | Date formatting |
β ReactRouterDom | Routing and navigating the app |
β react-toastify | Display toasts notifications to provide user feedback |
β socket.IO | Stablishing and mantaingin a conneciton to a web socket for real time notifications |
- Creating and verifing an account.
- Buying and selling cryptocurrencies.
- Transfering crypto among users.
- Light/Dark mode
- Personalize user data (change name/lastName/profilePicture/password)
In order to manage global state without adding any extra dependencies, the app makes use of the ContextAPI. First, the App component (the higher level one) fetchs all the necessary data and sets several states:
Then, two objects are created holding these states: sessionData and coinsData, the first one keeps the user session data, such as the username, the unique hexacode used for sending transactions and so. The second one holds all data related to the current prices of different cryptos (provided by coinGECKO) and the unique wallet of the logged user. The objects are passed as values of the context Providers.
In order to make use of the context, we took advantage of the destructuring syntax of javascript.
In order to buy and sell cryptocurrencies, the user has many links to the detail page of each coin.
There, the user can see all the latest data about the coin, buy and selll.
###Deposit and Transactions
There's a view dedicated to hold the deposit of fiat money to the user's account and the transferences data (sending one and showing transferences history) and the current balance of the user's wallet.
Once you enter a valid value, the Deposit component lets you enter USD to your account.
The transfer button activates once the user loads all the necesary data
The user can view his/her last 5 movements as sent or received transactions, and has the option to view all movements.
The app's design system is based on TailwindCSS, it's fully responsive and should render properly on all devices.
Robuschi Juan CruzHerrera Victor Maximiliano
Rocha Lautaro
Pereyra Lucas
Gauto Leonardo Sebastian
OrdoΓ±ez Gonzalo