Technical Specification

Architecture Overview

The system follows a modular, service-oriented architecture for managing benefit schemes, applications, and configurations for the UBI Provider platform. It consists of:

  • Frontend applications

  • Backend services

  • Headless CMS

  • PostgreSQL database


Components & Interactions

  • Benefits Provider App (React) communicates with Provider Backend (NestJS).

  • Provider Backend uses Catalog Manager APIs (from Strapi CMS via Provider Middleware) to fetch and manage benefit catalogs, applications, and configurations.

  • Both Strapi (Catalog Manager) and Provider Backend persist data in PostgreSQL databases.


Components & Tech Stack

1. Benefits Provider App

  • Built with React (v18), Vite, and Chakra UI.

  • Consumes REST APIs from Provider Backend for:

    • Benefit listing

    • Application submission

    • Status tracking

  • Key technologies:

    • React: Frontend component library

    • Vite: Build tool and development server

    • React Router DOM: Routing for React apps

    • Chakra UI: UI component library

    • TypeScript (v5): Type safety


2. Provider Backend

  • Built with NestJS (v11), exposes REST APIs for the frontend.

  • Integrates with Catalog Manager (Strapi CMS) via Provider Middleware APIs.

  • Uses Prisma ORM with PostgreSQL for data persistence.

  • Provides Swagger API documentation.

  • Key technologies:

    • NestJS: Backend framework

    • PostgreSQL: Relational database

    • Prisma ORM: Database abstraction

    • Swagger: API documentation

    • Scheduling (NestJS): Cron-like job handling

    • Axios / HTTP client: External requests

    • TypeScript (v5): Type safety


3. Catalog Manager

  • Headless CMS built with Strapi.

  • Manages benefit catalogs and configurations.

  • Uses PostgreSQL for database storage.

  • Key technologies:

    • Node.js (v18+): Runtime environment

    • Strapi: Headless CMS framework

    • PostgreSQL: Database driver

    • React / React Router DOM: For CMS frontends (if needed)

Last updated