Skip to content

aerecurax/Java-Enterprise-Test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Account Opening Enterprise Test

Overview

This is an API test project providing a set of endpoints and functionality to be used in an enterprise environment. The project provisions a list of endpoints and functionalities including but not limited to:

  • Endpoint for customer profile creation
  • Endpoint for current account creation
  • Endpoint to obtain the list of transactions related to an account

Project Structure

The structure of the project is mainly in three parts:

  • doc/adrs folder - discussions around the decisions taken in the implementation of this project is discussed
  • AccountService module - containing the Accounts service for customer account/profile management
  • TransactionService module - containing the Transactions service for transaction management

Install/Usage

Installation Requirements

  • Java 17
  • Maven
  • SpringBoot v3.1.1

Run

Testing and running the application. You need the AccountService and TransactionService running to experience the full functionality of the project.

Starting and testing the AccountService

Navigate to the service module/folder in a different terminal:

cd ./AccountService
mvn clean install
mvn spring-boot:run

Starting and testing the TransactionService

Navigate to the service module/folder in a different terminal:

cd ./TransactionService
mvn clean install
mvn spring-boot:run

Considerations/Issues

A number of considerations and issues have been covered in the system design adr already here, below other assumptions and considerations are covered:

  • It'd have been best to have the modules of this project in separate repository but for the sake of accessibility, a multimodule project structure is used
  • H2 (in-memory) is used as the database for both services
  • OpenAPI is used for API documentation and testing
  • TDD (use-case perspective) was used for implementation of all business logic
  • No security mechanism was implemented for this project but options to explore include but not limited to JWT Authorization/Authentication with RBAC, API keys or BASIC authentication
  • Containerization mechanisms were considered but not implemented. In this case Docker or Kubernetes could be used
  • The services are loosely coupled. Read about loosely coupled system here
  • Lastly, REST is used for communication between the two services. There are other good solutions to replace this "infrastructurally" covered in the system design ADR

About

The assessment consists of an API to be used fo opening a new current account of already existing customers

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages