# Why the BFF is the only public boundary

Canonical: https://stevenmoriasi.com/blog/mobility-finance-event-platform
By [Steven Moriasi](https://www.linkedin.com/in/steven-moriasi/).
Source: https://github.com/steven-moriasi/mobility-finance-event-platform
Date: 2026-09-20

## Context

Asset-finance demos collapse into a form with a disburse button. Production needs to answer which principal may see which workspace, and whether a worker can mutate state the BFF never authorised.

[Mobility Finance Event Platform](https://github.com/steven-moriasi/mobility-finance-event-platform) is a synthetic C#/.NET reference for that door. Origination, repayments, asset operations, workflow review, and platform ops sit behind one authenticated web app.

A related decision — [why broker delivery is not financial truth](/blog/broker-delivery-is-not-financial-truth) — lives in a separate note.

## Decision

Users talk to one shell. The BFF applies role-based access in the browser and the same policies server-side. Domain services and workers stay internal. They are not a second public surface. Observability (Prometheus, Grafana) is part of the local stack.

## What I rejected

Exposing each domain API to the browser with a shared JWT, and letting workers listen on a public port “for convenience.” Either choice makes RBAC a UI suggestion.

## Failure scenario

A client calls an internal repayment URL directly. The request never reaches a public listener. Work that should happen still goes through the BFF, so audit and RBAC stay on one door.

## Evidence

`make app-start`, architecture notes, Helm and Bicep assets, and a documented no-cloud-deployment boundary when the Azure gate is unused. Synthetic data only; no real lending.

Inspect: [Repository](https://github.com/steven-moriasi/mobility-finance-event-platform) · [Architecture](https://github.com/steven-moriasi/mobility-finance-event-platform/blob/main/docs/architecture.md) · [Run locally](https://github.com/steven-moriasi/mobility-finance-event-platform#local-experience)

_—by [Steven Moriasi](https://www.linkedin.com/in/steven-moriasi/)_
