My image

For sake of demonstration, Core i solutions developed the cloud application 
to demonstrate how we can achieve a multi tiered architecture with model view controller to develop 
a modern cloud applcation with the IBM i and DB2 database at the core of the architecture. 

LottoPoolNation is a legitmate fully functional website that tracks the lottery games POWERBALL and MEGAMILLIONS in real time 
via http api calls from the IBM i to a 3rd party company with that data (per subscription status).  Depending on the jackpot 
amounts at any given time a user makes a request to the service layer and getPools service, the jackpots are examined 
and 3 pools are calculated with different payout options based on the number of participants and presented to the user. 
If the user joins a pool, they are asked to upload images of their tickets and sign a legal agreement for pool sharing 
reasonings in the event of a win.  The user can un-enroll at any time. 
All images are stored on and retrieved from DB2 on the IBM i, and all 3rd party http API consumptions are executed via 
an sqlrpgle pgm on the IBM i and not from the .NET core application tier. 

The tiers and their relationships are as follows...
 - application tier = external webserver with .NET core (however dumb, only facilitates UI/UX and makes required calls to IBM i 
 - presentation tier = external webserver with .NET core for the gui
 - service tier = IBM i
 - data access tier - IBM i

Emphasis Services Used Description
Demonstrating Multi Tiered Architecture utilizing Model View Controller
, with a modern .NET Core gui front end with IBM i and DB2 on the backend.
Two Factor Authentication
In this video we watch how the presentation 
layer accepts a phone number and email from the user and executes a 
service call from the application tier via HTTP to the service tier on the IBM i (sndLoginInfo)..
The webservice generates a random number and calls a 3rd party sms txt msg 
service (Twilio) using qsys2.http_post and sends the random code to the users 
phone sitting in front of the presentation layer.
When user receives the txt msg they input the code which submits a new service
request to the IBM i service layer (chkLoginInfo).
This video shows how the CoreiRST webservice calls an SQLRPGLE  
service on the IBM i (invoked from the gui front end (application tier) via http),  
and produces a response to load all the lottery pools to the .NET gui front end.
Image/Base64 DB2
In this video, we demonstrate how a service can be called to the IBM i service tier 
and retrieve/store images from/to DB2 clobs in base64 format.  Then with base64 string  
the image can be pulled from service and database tier up to the modern gui application tier 
to be displayed on the front end.  We also have a backend check in the postParticipantSettings
sqlrpgle pgm to ensure the max bite size of the image is not greater than 1.5MB.