The FinOps for Cloud Extension enables SoftwareOne to manage the FinOps for Cloud tool. It supports the provisioning and administration of FinOps for Cloud organizations and users, as well as the management of datasource entitlements.
backend/— Python backend (FastAPI + SQLAlchemy + Alembic); Alembic migrations underbackend/migrations/.frontend/— React + TypeScript extension UI, bundled with esbuild.static/— esbuild output (do not edit by hand).e2e/— Playwright end-to-end tests.docs/— conventions and architecture notes (see below).
AGENTS.md— guidance for AI coding agents (and humans) working in this repo.docs/conventions/naming.md— frontend file & folder naming.docs/conventions/api-hooks.md—useFooApivsuseFooDetailsApipatterns.docs/conventions/i18n.md— translation namespaces,useFixedT, dynamic keys.docs/conventions/modals.md— entry vs standalone modal pair pattern.docs/architecture/entry-mode.md—mountStandaloneEntry/mountFeatureEntry/mountModalEntry.docs/architecture/mpt-host-integration.md— iframe-as-extension runtime.docs/architecture/standalone-mode.md—useHasMPTHost/useStandAloneApp/useIsStandaloneShell.docs/dev/devcontainer.md— devcontainer setup.
You can use the env.example as a base to set up your running environment and customize it according to your needs.
docker compose run --rm app_test
docker compose up app
This runs ffcops serve -w2 --ziti-load-timeout-ms 20000 inside the app
container (see docker-compose.yaml). To override worker count or any other
serve flag, run the CLI directly:
docker compose run --rm --service-ports app uv run ffcops serve --server-workers 4See uv run ffcops serve --help for the full flag list (--server-backlog,
--server-timeout-keep-alive, --server-reload, etc.).
To build the production image please use the prod.Dockerfile dockerfile.
Important
Developers must take care of keep in sync dev.Dockerfile and prod.Dockerfile.