Billing UI - Project Overview

🏠 Home billing / billing-ui / docs

Billing UI - Project Overview

Solution Structure

Project Type Framework Description
TELS.Billing.Web Web Application (Lambda) .NET 8.0 ASP.NET Core backend serving React SPA via AWS Lambda
TELS.Billing.Web.Tests MSTest (.NET 8.0) .NET 8.0 Backend unit/integration tests (Moq)

Frontend

Technology Version Description
React 17.0.0 UI framework
TypeScript 4.2.3 Type-safe JavaScript
Redux State management with redux-thunk
React Router 5.0.1 SPA routing
DUEL Design System 6.3.0+ Direct Supply component library
Webpack 4.35.3 Module bundler
Karma + Jasmine + Enzyme Frontend testing

Architecture

Purpose

Billing UI is a React Single-Page Application hosted on AWS Lambda via Application Load Balancer. It provides the TELS Billing web interface for managing custom PO number configuration and billing facility settings. Served at https://{domain}/Billing/{chainBusinessUnitId}/*.

Layering Pattern

+-----------------------------------------------------+
|  React SPA (TypeScript + DUEL Design System)         |
|  Redux state management, React Router                |
|  Custom PO numbers, billing configuration            |
+-----------------------------------------------------+
|  ASP.NET Core 8.0 (Lambda runtime)                   |
|  JWT cookie auth, CSRF protection, CSP headers       |
|  Proxies API calls to backend services               |
+-----------------------------------------------------+
|  AWS Lambda + ALB                                     |
|  Path-based routing: /Billing/*                      |
|  Priority 1017 listener rule                         |
+-----------------------------------------------------+

Authentication & Security


Key Technology Stack

Category Technology
Runtime .NET 8.0 on AWS Lambda
Frontend React 17, TypeScript 4.2, Redux, DUEL Design System
Lambda Amazon.Lambda.AspNetCoreServer 4.1.0
Auth System.IdentityModel.Tokens.Jwt 6.14.1, KMS-encrypted secrets
Security Joonasw.AspNetCore.SecurityHeaders 3.0.0
Monitoring NewRelic.OpenTracing.AmazonLambda.Tracer 1.0.0
Build Node 14, Yarn, Webpack 4, ts-loader, Babel
Testing MSTest + Moq (backend), Karma + Jasmine + Enzyme (frontend)

External Integrations

Integration Mechanism Description
Auth Service HTTP API JWT refresh/access token endpoint
Customers Service HTTP API (DSE.TELS.Customers) Business unit hierarchy, owners, contacts, chains
Billing Service HTTP API Custom PO numbers, billing configuration
DSSI Clearinghouse Generated REST client v3 Integration lookup
DSSI Provider Service Generated REST client v2 Provider information
ECommerce Customer API Generated REST client v5 Authorization codes
AWS KMS AWSSDK.KeyManagementService JWT secret encryption

Deployment

Lambda Configuration

Setting Value
Handler TELS.Billing.Web::TELS.Billing.Web.LambdaEntryPoint::FunctionHandlerAsync
Runtime .NET 8.0
Memory 512 MB
Timeout 60 seconds
Reserved Concurrency 20

ALB Integration

Environments

Environment URL
DEV https://devsmart.tels.net/Billing
QA https://qasmart.tels.net/Billing
PROD https://smart.tels.net/Billing

CI/CD Pipeline

Stages: build → test → ephemeral_plan → ephemeral_deploy → ephemeral_destroy → sandbox_plan → sandbox_deploy → testing_plan → testing_deploy → production_plan → production_deploy

Stage Details
Build dotnet test, yarn install, yarn test-ci, yarn build, dotnet lambda package
Test Backend (MSTest) + Frontend (Karma/Jasmine)
Deploy Terraform plan → apply per environment
Environments Ephemeral (manual, any branch), Sandbox (manual), Testing/Prod (manual, master only)

Infrastructure


Notes