Invoices application
-
Gold recipient of the Stevie Awards 2019 (Customer Service Success) - The award was accepted by one of our global stakeholders, https://www.youtube.com/watch?v=8KO-O80GbH4, who we collaborated during project development. Link to article, https://stevieawards.com/sales/ibm-customer-service-success.
"INVOICES application was fully deployed within six months with approximately 14,000 users migrated to the new instance. The new instance provided several benefits like a state-of-the-art design, access via mobile devices, more frequent and better controlled code deployments, improved monitoring and security and last, but not least 75% cost savings over previous year."
"Pursuing excellence in serving its customers, with introducing single INVOICES application and fixing migration related issues, the INVOICES squad delivered over $1M in annual savings, over 50% reduction in invoice retrieval time, and demonstrated to IBM clients that their input is valued and welcomed, earning their advocacy and support. The team also proved that even with constrained resources, you can achieve a lot by doing the right work and doing it right."
-
The first IBM client facing application that is only using the Cloudant database as main database service. We're the first team in IBM to achieve this milestone.
"... I would thank all the teams involved into this Strategic Initiative for the hard work, effort and dedication to keep the date and scope planned for this Release 1.0. This is a very big achievement and demonstration of a real cooperation between different squads that are applying Agile methodology, that is itself a success
Allow me to personally thank @Dela Pena, Norbert Aluba (Norbert Aluba) from Engage Support team who has worked really days and nights during the last period to complete all the MTP activities and ... JORGE A (Jorge) who is driving us in a so complex project.”
by Sabrina (IBM Italia - PM) May 2017
BCI migration
-
Successfully migrated the Fabric version, from v1.1 to v1.4 LTS, and IBM Blockchain Platform version, from v1.0 to v2.0. Link to the article, https://en.bci.network/post/bci-in-collaboration-with-ibm-advances-blockchain-based-financial-services-with-elg-1, detailing the milestone
From BCI
"...The major upgrade from Hyperledger Fabric v1.1 to Hyperledger Fabric v1.4 LTS posed huge business and technical challenges, with months of preparation and tremendous effort from all 15 participating entities working closely together on improving the business processes, security, governance, compliance and technical resources. The IBM team's strong commitment and outstanding support to BCI made this upgrade to global best practices a great success with zero downtime,' said Siriwat Keatcharoensin, President of BCI (Thailand) Co., Ltd. 'With IBM Blockchain as the technology foundation, and with the innovation milestone we achieved today, we are ready to welcome new members to our eLG platform and collectively bring maximum efficiency to business transactions in Thailand. ..."
From IBM
"We had a call with BCI Executives today and I’d like to personally thank you for the amazing work you did with our BCI Blockchain Network migration. I understand from the team that you have been helping 15 BCI members since end of June, with long hours of conference calls to guide our clients on the migration steps....it’s called out as one of the best engagements we have had with them so far. "
by Patama Chantaruck (VP For Indochina Expansion And MD Of IBM Thailand IBM) - Sep 2020
A fully deployed and utilized hotel management system for a small apartment. This system is composed of a single page app, written in React, and multiple microservices running on a Kubernetes cluster. IOT devices are also setup to automate lights based on guest schedule.
Frontend
- Responsive SPA - The frontend single page app, written in React, is a responsive application leveraging react-bootstrap. The app is intended to be used in a tablet device but can also be viewed in the browser.
- Mobile app web view - A simple iOS app (dev mode), which loads the web application's URL, is used by the end-user. Accessing it directly via browser, in the tablet, is also an alternative way of using it.
- Components - Content list, view and forms are the main building block components.
Backend services
- RESTFul API - ExpressJS was the choice for writting the API with swagger routes express as the main Swagger API middleware. Dedicated APIs were written for each apps to only cover it's business purpose or there's a separation of concerns.
- Data service - A Cloudant database was provisioned to hold the processed data and store inputted information from the user. A statefulset resource was defined to create the data service.
- Service interactivity - Some services communicate with each other to perform data processing or retrieving information
- ETL - Data from a 3rd party source is extracted, formatted and dumped to a Cloudant database. The processed data is consumed by the API or the other backend jobs.
- IOT devices - Cron jobs trigger smart lights and/or smart plugs to turn on/off based on the guest information.
CI/CD
-
Containerization - I'm using GitHub Actions to build the docker images, package and deploy them to the GitHub docker respository. All UI, API and cron job services are containerized.
-
Packaging the apps - Using GitHub's packaging service, I maintain two images, latest and second newest tag. Once a new version is released, the oldest version will be purged.
-
Deployment - A custom DigitalOcean plugin is installed in the pipeline to allow GitHub actions access to the kubernetes cluster.
Cloud infrastructure and networking
- Kubernetes cluster - The UI, APIs, cron jobs, ETL, and Cloudant are currently deployed in DigitalOcean's Kubernetes droplet. Each app has it's own pod. Pods communicate via service resource or accessing the internal route.
- Load balancer - A load balancer was required to handle the traffic coming in. Traffic will be directed to the Nginx ingress controllers. Another 3rd party domain service hanlder manages the domain and configuration.
- Nginx ingress - Specific requests coming from the client app will be handled by the nginx ingress controller. A specific route will be directed to a specific API's k8s service resource.
- SSL - I'm using Let's Encrypt for my security certificates, which I use in my frontend and backend services.
Architecture
Dashboard application
Important Note: Majority of my past projects are internal projects so I can only showcase my own work and other publicly accessible projects. This is personal project that I made, on my spare time, so that I can continue to code, try new capabilities with K8s and create an application with a microservices design pattern philosphy.
- An internal invoicing application written in AngularJS, while the API is written in ExpressJS
- Requires internal access: https://www.ibm.com/support/customer/zz/en/invoices.html
- This customizable script uses puppeteer to create an IBM Blockchain Platform network (IBP)
- You must create the IBP instance first then the URL and credentials will be utilized by the automated sript
- See repository: https://github.com/n0rbs/puppeteer-blockchain-platform
- Developed this RESTful API in the past few days - a total of 48hours of development
- This is an end-to-end application development, from coding to Cloud hosting deployment.
- See repository: https://github.com/n0rbs/student-teacher-api
- A few publicly accessible newspaper which showcases the e-paper. You can view the e-paper on your mobile browser
- The New Paper - https://epaper.tnp.sg/jr/jc.api.d.php
- Tabla - https://www.tabla.com.sg/jr/jrpc.php