Architecture Overview

The solution is built in three layers:

Layer Technology Description
Frontend Vue 3, Vite, vue-router SPA served by Apache (UBI8 httpd-24).
APIs .NET 8.0, ASP.NET Core Three services: ApiCustomers, ApiWalletBuffaloBills, ApiWalletLasVegasRaiders. Path base /api, Swagger at /api/swagger.
Data SQLite One database per API: customers.db, buffalobills.db, lasvegasraiders.db.

The frontend calls the Customers API for the customer list and details, and the two Wallet APIs for balance and transactions per team. All APIs support CORS for the frontend origin.


Running With Podman Compose

You can run the full stack locally with Podman Compose. The podman-compose.yml at the repo root defines four services:

Commands:

# From the repo root
podman-compose up -d --build

# Open the app
# http://localhost:5160

The webapp is built with build args so it points to http://localhost:5001/api, http://localhost:5002/api, and http://localhost:5003/api for the three APIs. Data is persisted in named volumes.

Podman Compose Running the stack with Podman Compose. Click to enlarge.


Running With Red Hat OpenShift Dev Spaces

The repo includes a devfile.yaml for Red Hat OpenShift Dev Spaces (and compatible CodeReady Workspaces). You can open the project in a browser-based IDE and run the full stack there.

This allows developing and testing the centralized wallet in a cloud IDE without installing .NET or Node locally.

OpenShift Dev Spaces Dev Spaces workspace. Click to enlarge.

Dev Spaces run Build and run in Dev Spaces.

Dev Spaces app App running from Dev Spaces.