Simple personal project, that allows user to:
- Watch actual cryptocurrency prices and statistics on Dashboard
- Login and add transactions of his buys and sells of cryptocurrencies
- User's profit or loss, actual holding amount and average purchase price are calculated and updated based on added transactions and transaction prices (Holdings page)
- User's transactions (Transaction history page) and Holdings (Holdings page) are logged and saved into database
You can try the demo HERE
- Actual info: If you want to try this app, you have to run it locally on your machine based on steps below, because of expired backend hosting on Heroku.
- Based on that, users are currently not able to register and login using username and pw. Users are however still able to login via Google Auth, but don't see their holdings and transactions (as these are fetched from the currently unhosted BE).In order to run this project locally, simply fork and clone the repository or download as zip and unzip on your machine.
- Open the project in your prefered code editor.
- Go to terminal -> New terminal (If you are using VS code)
$ cd client
Create .env file in the root of your client directory. Add:
REACT_APP_GOOGLE_CLIENT_ID = *your google client ID*
REACT_APP_API = http://localhost:8000
$ npm install (to install client-side dependencies)
& npm start (to start the client)
$ cd server
Create .env file in the root of your server directory. Add:
MONGODB = *your mongoDB cluster URL*
JWT_SECRET = *your secret string for JWT*
$ npm install (to install server-side dependencies)
& nodemon index.js (to start the server)
Data from CoinGecko API is used in this project.
-
Frontend: React, Typescript
-
Database: MongoDB
-
Other: Redux (for state management), Material UI, Styled components, React Icons, Axios, React-router-dom, JWT (for authentication), bcryptjs (for data encryption), …
- Google sign in vs. Form sign in with same gmail is not considered as same user
- Potential extension to use also stocks data
- Implementation of charts for movements
- Profit and loss statement for specified period based on added transactions and prices