GMB Admin Portal and API Omnichannel (Internal Solution)

GMB Admin Portal and API Omnichannel (Internal Solution)

GMB Admin Portal and API Omnichannel (Internal Solution)

Date

Date

Date

2022

2022

2022

Service

Service

Service

Software Engineering, Backend Development

Software Engineering, Backend Development

Software Engineering, Backend Development

Client

Client

Client

Greenwich Merchant Bank

Greenwich Merchant Bank

Greenwich Merchant Bank

Project Overview

The project entailed building an independent solution consisting of an admin portal and payment-processing omnichannel to enable bank tellers to manage the transactions of third-party vendors. The application featured an intuitive, role-based system capable of handling large transaction volumes while giving users the ability to pay via multiple methods.



Development Approach

Building an application for the bank requires implementing highly secure development practices. This informed the methodology and technology requirements for the project. Java was chosen as the programming language and a team of four was formed including a lead backend developer, 2 frontend developers and a project manager adopting an agile scrum approach.


Technology Stack:

  • Programming language: JAVA/Kotlin

  • Build system: Gradle

  • Development Server: Apache Tomcat Server

  • Testing: Postman, Swagger

  • Version Control: Git via Microsoft Azure Cloud

  • Deployment and Hosting: AWS (Test), Production (Apache Tomcat)


Insights

  • User-Centric Design Focus:


Implementing role-based access control (RBAC) is a crucial first step towards securing system assets and company resources. By granting or denying access based on defined roles and responsibilities, RBAC ensures that only authorized individuals have access to sensitive information and resources which also works great for system audits and compliance. I was able to achieve this by implementing a JWT authentication scheme as well as using the @rolesallowed annotation in JAVA, which helped to specify which classes or APIs each user group was allowed to access.


  • Problem-Solving Showcase:

  1. The first problem I faced was trying to convert mission-critical, legacy SOAP APIs to modern HTTP REST standards. I performed detailed research leading me to discover and implement the maven JAXB plugin, which enabled me to conveniently "marshal" (write) and "unmarshal" (read) Java Objects into XML data and vice versa. The plugin essentially utilizes the Java API for XML Binding to generate Java classes from XML Schemas (and optionally binding files) or to create XML schema from an annotated Java class which made it simpler to consume and expose the necessary APIs via the REST standard which uses the much simpler JSON format as a means of communication.


  1. I also created an Authorization queue which enabled tellers to approve or deny any transaction


  1. The next challenge involved creating a module that would send automated bank statement reports to a particular email address at a specific time of day every week for reconciliation. To solve this problem, I implemented a Cron job. Using this approach also helped me take advantage of Java's multi-threaded nature. It ensured that the service would start on a separate thread without interrupting the application which was executing on the main thread, the service would then go on to query the necessary APIs to fetch the statements, compile/convert them into a .csv file, and send to the specified email address. All configurations (e.g. changing the client's email, specifying the frequency at which statements were generated, etc.) could be achieved by editing the .properties file which ensured a high level of flexibility.


  • Performance Metrics and Optimization:


Performance benchmarks were provided via the use of Spring Actuator, a tool that gave us access to endpoints allowing us to check the health, speed, and observability metrics of the application.


  • Testing and Quality Assurance:


As always, following a Test-Driven Development (TDD) strategy proved invaluable, especially since the project involved integrating over 300 APIs from numerous vendors across the payments landscape including Interswitch, Remita, and other financial service providers to pay bills, generate digital invoices and receipts, virtual NUBANs etc. I wrote unit tests for each module to ensure correctness, reducing the need to employ dedicated testers at the initial phase of development thereby saving cost. Documentation was also provided locally via Swagger. To test each API, one would simply be required to launch the app, navigate to the provided Swagger documentation URL, and test the endpoint after authenticating.


  • Project Achievements and Outcomes:


The project was concluded to resounding success and plans are currently underway for a conversion which will see improvements in areas such as usability and maintainability. GMB bank tellers were grateful to finally have a portal through which they could view all user actions and transactions made on the system. The source code has been moved to a private GitHub repository here for future reference.


  • Lessons Learned and Future Considerations:


In retrospect, I'd suggest placing as much emphasis on product planning/design in order to create a clearer picture and ease/speed up development efforts. Other than that, it was a great learning experience and I enjoyed getting the chance to build a product that helped make other people's jobs easier.

More projects

Got questions?

I’m always excited to collaborate on innovative and interesting projects.

Got questions?

I’m always excited to collaborate on innovative and interesting projects.

Got questions?

I’m always excited to collaborate on innovative and interesting projects.

©2024

©2024

©2024

Get Template for free

Create a free website with Framer, the website builder loved by startups, designers and agencies.