This repository contains my "BlockTracker" project. The application is designed to track cryptocurrency investments.
The application is using both SSR(Server-side rendering), CSR(Client-side rendering) and supports the following functionalities:
- Registering and authenticating users using credentials or OAuth2 Google auth.
- Validating request information.
- Mailing service for registering confirmation.
- Handling exceptions and serving error messages.
- Editing and serving web-pages with static information.
- CRUD operations for portfolios, transactions, coins and watchlist items following REST style.
- Working with KuCoin API to get actual information on cryptocurrencies.
- Display a watchlist(actual information on added cryptocurrencies) and ability to add/remove items.
- Display a list of all portfolios and the ability to add/remove/edit them.
- Display a list of all coins in portfolio and the ability to add them through transactions or remove them.
- Display a list of all transactions on chosen cryptocurrency and add/remove/edit them.
- Display errors responses from server.
- Pages with static data are generated from templates and fragments using Thymeleaf.
- Controllers serving those pages to client together with JS code.
- JS code is running on client, perform API requests to server.
- API controllers will handle those requests.
- JS code fill pages with up-to-date dynamic information.
The application utilizes the following technologies:
- Java 11
- Maven
- Lombok
- Spring Boot
- Spring MVC
- Spring Security
- Spring JavaMail
- Thymeleaf
- JPA
- PostgreSQL
- OAuth2 (Google auth)
- Google Gson
- KuCoin API
- HTML
- CSS
- JavaScript
- Bootstrap
- JQuery
- portfolio - usr: many to one.
- confirmation_token - usr: one to one.
- watchlist_item - usr: many to one.
- coin - portfolio: many to one.
- transaction - coin: many to one.
Note: Portfolio class contains list of coin only for cascading deletion using JPA. For the same reason, coin contains list of transactions.
The project implements following basic architecture:
-
Backend:
- Controllers: Handle incoming HTTP requests.
- Services: Implement business logic.
- Repositories: Manage database interactions.
-
Frontend: Communicate with the backend, displaying information.
- Clone the repository.
- Prepare database.
- Set up the database configuration in
application.properties
. - Obtain your OAuth2 credentials here.
- Get your e-mail credentials. (host, port, username, password)
- Get your KuCoin API credentials here.
- Fill in all fields in
application.properties
. - Build and run the Spring Boot application.
- Access the application by navigating to http://localhost:8080 in your web browser.
- Explore all the functionalities as described.