This template is the Acme Bank paved-road React frontend for IDP demos. It creates a single React 19, TypeScript, Vite, Tanstack Query, and React Router SPA that deploys as an nginx-backed Azure Container App and joins an existing Acme Bank Azure environment.
mkdir <your-frontend> && cd <your-frontend>
azd init -t octodemo/acme-bank-frontend-template . -e dev
azd upThat's it. azd up packages the image, provisions infra into the existing Acme Bank resource group, and deploys the new Container App. azd will prompt for an Azure subscription on first run.
This template provisions only the new frontend Container App, its user-assigned managed identity, and an AcrPull role assignment. The Container Apps Environment is looked up by name (cae-${namePrefix}-${suffix}) using a Bicep existing resource, matching the convention used by octodemo/acme-bank. The shared ACR name and the BFF Container App name are likewise resolved from the same environment — so no environment variables need to be set up front.
The target resource group is set in azure.yaml (resourceGroup: rg-acmebank).
The container starts nginx after substituting BFF_BASE_URL (resolved from the BFF Container App's FQDN) into nginx.conf, so browser requests to /api/* are reverse-proxied to the existing acme-bank BFF.
Override the demo defaults to point at a different shared environment:
azure.yaml→ changeresourceGroupto your platform's resource group.infra/main.bicep→ change thecontainerRegistryNameparameter default.- Pass
--parameters bffBaseUrl=https://your-bff(or setACME_BFF_BASE_URL) if the BFF doesn't follow theca-${env}-bffnaming convention.
The starter intentionally uses acme-frontend everywhere so Copilot or a developer can rename it after azd init. Replace it with your service name in:
package.jsonazure.yamlinfra/main.bicepdefaultserviceName.github/workflows/build-image.ymlIMAGE_NAME
npm install
npm run devVite proxies /api to http://localhost:5080, which matches the local Acme Bank BFF default. Start the BFF locally before exercising API-backed features, or expect the sample endpoint to show the friendly no-backend placeholder.
- PR validation with
npm ci, ESLint, TypeScript, and Vitest. - CodeQL analysis for JavaScript and TypeScript.
- Dependency review with license guardrails.
- Docker image build with SBOM generation using
microsoft/sbom-tool. - Build provenance and SBOM attestations on
main. - OIDC-based Azure login for image push and
azd provision.