The currency conversion app aims to provide users with real-time and accurate currency conversion rates. It will support a wide range of currencies and offer a user-friendly interface. The app will be developed for multiple platforms, including web, Android, and iOS.
Deployed via AWS BM-ConCurrency
- A Backend Rest-API designed using MVC Design Architecture.
- Allow users to convert between different currencies.
- Fetch real-time exchange rates.
- Regularly update the rates to reflect the most recent changes in the currency market.
- Mark specific currencies as their favorites for quick access.
- Error and Exception handling.
- Documentation using swagger and openai.
- Validation layer.
- Caching with redis and cache clean every hour.
- Unit testing on service and controller.
- Logging
| .gitignore
| mvnw
| mvnw.cmd
| pom.xml
| README.md
|
+---.github
| \---workflows
| maven.yml
|
+---.idea
| .gitignore
| compiler.xml
| encodings.xml
| jarRepositories.xml
| misc.xml
| vcs.xml
| workspace.xml
|
+---.mvn
| \---wrapper
| maven-wrapper.jar
| maven-wrapper.properties
|
+---src
| +---main
| | +---java
| | | \---com
| | | \---bm
| | | \---concurrency
| | | | ConCurrencyApplication.java
| | | |
| | | +---config
| | | | RedisManager.java
| | | |
| | | +---constants
| | | | \---enums
| | | | Currency.java
| | | |
| | | +---controllers
| | | | CurrencyController.java
| | | |
| | | +---exception
| | | | CurrencyApiException.java
| | | | GlobalExceptionHandler.java
| | | | ResourceNotFoundException.java
| | | |
| | | +---payload
| | | | +---DTOs
| | | | | CompareDto.java
| | | | | ConvertDTO.java
| | | | | CurrencyDTO.java
| | | | |
| | | | +---error
| | | | | ErrorDetailsDTO.java
| | | | | ValidationErrorDTO.java
| | | | |
| | | | \---response
| | | | CompareResponse.java
| | | | ConversionResponse.java
| | | | CurrencyListResponse.java
| | | | ExchangeRateResponse.java
| | | |
| | | +---service
| | | | | ICurrencyService.java
| | | | |
| | | | \---serviceImp
| | | | CurrencyServiceImpl.java
| | | |
| | | +---utils
| | | | CacheClean.java
| | | | ExchangeRateClient.java
| | | | Logger.java
| | | |
| | | \---validation
| | | CurrencyValidator.java
| | |
| | \---resources
| | application-dev.properties
| | application-prod.properties
| | application.properties
| | expected-currencies.json
| |
| \---test
| \---java
| \---com
| \---bm
| \---concurrency
| | ConCurrencyApplicationTests.java
| |
| +---controller
| | CurrencyControllerTests.java
| |
| \---service
| CurrencyServiceTests.java
|
\---target
+---classes
| | application-dev.properties
| | application-prod.properties
| | application.properties
| | expected-currencies.json
| |
| \---com
| \---bm
| \---concurrency
| | ConCurrencyApplication.class
| |
| +---config
| | RedisManager.class
| |
| +---constants
| | \---enums
| | Currency.class
| |
| +---controllers
| | CurrencyController.class
| |
| +---exception
| | CurrencyApiException.class
| | GlobalExceptionHandler.class
| | ResourceNotFoundException.class
| |
| +---payload
| | +---DTOs
| | | CompareDto.class
| | | ConvertDTO.class
| | | CurrencyDTO.class
| | |
| | +---error
| | | ErrorDetailsDTO.class
| | | ValidationErrorDTO.class
| | |
| | \---response
| | CompareResponse$CompareResponseBuilder.class
| | CompareResponse.class
| | ConversionResponse$ConversionResponseBuilder.class
| | ConversionResponse.class
| | CurrencyListResponse.class
| | ExchangeRateResponse.class
| |
| +---service
| | | ICurrencyService.class
| | |
| | \---serviceImp
| | CurrencyServiceImpl.class
| |
| +---utils
| | CacheClean.class
| | ExchangeRateClient.class
| | Logger.class
| |
| \---validation
| CurrencyValidator.class
|
+---generated-sources
| \---annotations
+---generated-test-sources
| \---test-annotations
\---test-classes
| classpath.index
|
\---com
\---bm
\---concurrency
| ConCurrencyApplicationTests.class
|
+---controller
| CurrencyControllerTests.class
|
\---service
CurrencyServiceTests.class
- Programming Language: Java 8
- Backend Framework: Spring Boot v3.1.2
- Deployment: AWS
- API Documentation: Swagger via OpenApi 3.0
- Caching: Redis
- Unit testing: Junit and mockito
- Supporting more currencies