Architecture¶
This kit builds front-end-only apps: everything runs in the browser, there is no back-end of your own, and you deploy nothing but static files. The user signs in with their own Cirro account, and the app acts as that user — their existing Cirro permissions and project roles are fully respected.
That constraint is the point, not a limitation. It lets a community of developers build, share and modify Cirro apps seamlessly, because shipping one is just hosting static files — no servers to run, no secrets to guard, no user database to manage. The kit's app template works this way.
How a front-end app is wired¶
flowchart LR
app["Your app<br/>(browser, tokens in memory)"]
authorize["Cirro authorize page<br/>(consent and sign-in)"]
api["Cirro API"]
s3["Project S3 bucket"]
app -- "sign in: code + PKCE" --> authorize
app -- "API calls: bearer token" --> api
app -- "file reads: signed URLs" --> s3
The app signs the user in through Cirro's authorize page with the authorization code flow and PKCE (no client secret — see authentication), calls the Cirro API with the resulting bearer token, and reads files with short-lived signed URLs. Every call is made as the signed-in user. The app is registered as a Public App; because the code is shipped to the browser, it holds no secret, and its only security concern is keeping the token safe from XSS on your own page.