Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
1aa18ab
docs(admin-panel): add PRD, DESIGN, and ADRs for integrated admin panel
KvizadSaderah Jun 25, 2026
7b12d02
feat(admin-panel): add make admin target and two-role dev auth stub
KvizadSaderah Jun 25, 2026
dd39605
feat(account-management): add admin-context endpoint for the admin panel
KvizadSaderah Jun 25, 2026
7b10114
feat(admin-panel): scaffold Refine SPA shell with context view
KvizadSaderah Jun 25, 2026
7f689be
fix(admin-panel): seed platform root so tenant views resolve
KvizadSaderah Jun 25, 2026
3919c7b
style(account-management): fix use-ordering in admin handlers mod
KvizadSaderah Jun 26, 2026
7994aba
feat(admin-panel): descriptor-driven resources with CRUD and actions
KvizadSaderah Jun 26, 2026
9e1946a
docs(admin-panel): record v0 resource-discovery implementation status
KvizadSaderah Jun 26, 2026
4f0ac6b
test(admin-panel): e2e for admin-context endpoint
KvizadSaderah Jun 29, 2026
2003891
docs(admin-panel): add web-docs guide and README section
KvizadSaderah Jun 29, 2026
15d5692
feat(admin-panel): add IdP-backed users resource
KvizadSaderah Jun 29, 2026
c824c18
feat(admin-panel): add tenant metadata resource
KvizadSaderah Jun 29, 2026
cb53fe7
test(admin-panel): add Playwright browser smoke
KvizadSaderah Jun 29, 2026
95879fb
fix(admin-panel): default tenant create form to a valid tenant type
KvizadSaderah Jun 29, 2026
a0a7683
feat(admin-panel): tenant hierarchy tree view
KvizadSaderah Jun 29, 2026
2ad8390
feat(admin-panel): add read-only egress upstreams and routes
KvizadSaderah Jun 29, 2026
08cec86
feat(admin-panel): tenant type select + auto-expanded tree root
KvizadSaderah Jun 29, 2026
27ecef4
feat(admin-panel): serve built SPA from disk at /cf/admin
KvizadSaderah Jun 29, 2026
85ef8e1
docs(admin-panel): document prod-serve of SPA at /cf/admin
KvizadSaderah Jun 29, 2026
f1bbbb7
docs(admin-panel): record review-driven pivot to generic distributabl…
KvizadSaderah Jun 30, 2026
2c5dddc
feat(admin-panel): derive resource fields from OpenAPI at runtime
KvizadSaderah Jun 30, 2026
c8354e4
fix(admin-panel): address types-registry entities by gts_id, not uuid
KvizadSaderah Jun 30, 2026
2f88209
fix(api-gateway): stop admin SPA serving stale/blank after a rebuild
KvizadSaderah Jun 30, 2026
d4ba6bc
feat(admin-panel): derive fields from OpenAPI for all named-schema re…
KvizadSaderah Jun 30, 2026
951d81a
docs(admin-panel): resolve discovery transport via concern-split (ADR…
KvizadSaderah Jul 2, 2026
8f960b8
feat(admin-panel): derive CRUD routes from OpenAPI, drop hand-written…
KvizadSaderah Jul 2, 2026
dbcac14
fix(admin-panel): render SPA at /cf/admin without a trailing slash
KvizadSaderah Jul 2, 2026
56abc41
fix(admin-panel): stop the /favicon.ico 404 with an inline SVG icon
KvizadSaderah Jul 2, 2026
d80863e
feat(admin-panel): move resource registration to declarative JSON config
KvizadSaderah Jul 2, 2026
ee2a53a
docs(admin-panel): document the concern-split + JSON registration
KvizadSaderah Jul 2, 2026
b5abeb5
chore(api): regenerate OpenAPI spec for admin-context endpoint
KvizadSaderah Jul 13, 2026
46f9776
style(api-gateway): cargo fmt admin SPA header tuple
KvizadSaderah Jul 13, 2026
9e359bd
docs(admin-panel): resolve ADR-0001 placement — monorepo v0, extracti…
KvizadSaderah Jul 13, 2026
7b23f60
fix(admin-panel): match OpenAPI paths structurally so tenant-scoped r…
KvizadSaderah Jul 13, 2026
c5e3de4
docs(admin-panel): reconcile ADR/DESIGN/PRD/README with the implement…
KvizadSaderah Jul 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,7 @@ tower-http = { version = "0.6", features = [
"decompression-deflate",
"follow-redirect",
"catch-panic",
"fs",
] }
uuid = { version = "1.23.3", features = ["serde"] }
governor = "0.10"
Expand Down
10 changes: 9 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -682,6 +682,14 @@ fuzz-corpus: fuzz-install

# -------- Mini chat --------

## Build the admin-panel SPA (apps/admin-panel/dist) so the server can serve it at /cf/admin
admin-spa:
cd apps/admin-panel && npm install && npm run build

## Run server with the integrated admin panel (config/admin.yaml, two-role dev auth stub); builds + serves the SPA at /cf/admin
admin: admin-spa
cargo run --bin cf-gears-example-server --features account-management,static-authn,static-authz,static-idp,static-tenants,static-credstore,otel -- --config config/admin.yaml run

# mini-chat targets are for running the mini-chat gear locally and in Kubernetes, with options for building Docker images and deploying with Helm.

.PHONY: mini-chat mini-chat-docker mini-chat-helm mini-chat-helm-template mini-chat-up mini-chat-down mini-chat-port-forward
Expand Down Expand Up @@ -804,7 +812,7 @@ mini-chat-down:

# -------- Main targets --------

.PHONY: all check ci ci_test ci_docs build .cargo-build .split-debug quickstart example mini-chat mini-chat-docker mini-chat-helm mini-chat-helm-template mini-chat-up mini-chat-down mini-chat-port-forward
.PHONY: all check ci ci_test ci_docs build .cargo-build .split-debug quickstart example admin admin-spa mini-chat mini-chat-docker mini-chat-helm mini-chat-helm-template mini-chat-up mini-chat-down mini-chat-port-forward

# Start server with quickstart config
quickstart:
Expand Down
17 changes: 17 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,23 @@ cargo run --bin cf-gears-example-server -- --config config/no-db.yaml run
cargo run --bin cf-gears-example-server -- --config config/quickstart.yaml --mock run
```

### Admin panel

An optional Django-admin-style management console (`apps/admin-panel`, React + Refine) is
available. It manages the platform through the Gears APIs only — with platform-admin and
per-tenant modes — and is metadata-driven, so new resources are added by registering a
descriptor. `make admin` builds the SPA and serves it from the example server:

```bash
make admin # builds the SPA, serves it at http://localhost:8087/cf/admin
# (Gears APIs at /cf, non-prod dev tokens)
# for frontend hot reload instead:
cd apps/admin-panel && npm install && npm run dev
```

See the [Admin panel guide](docs/web-docs/build-with-gears/admin-panel.md) and the design set under
[`docs/arch/admin-panel/`](docs/arch/admin-panel/) (PRD, DESIGN, ADRs).

Comment thread
coderabbitai[bot] marked this conversation as resolved.
### Example Configuration (config/quickstart.yaml)

```yaml
Expand Down
8 changes: 8 additions & 0 deletions apps/admin-panel/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
node_modules/
dist/
*.local
.vite/
*.tsbuildinfo
test-results/
playwright-report/
playwright/.cache/
18 changes: 18 additions & 0 deletions apps/admin-panel/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- Inline SVG favicon: avoids the browser's default /favicon.ico request,
which resolves to the origin root (outside /cf/admin) and 404s. -->
<link
rel="icon"
href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='6' fill='%231677ff'/%3E%3Ctext x='16' y='23' font-size='20' text-anchor='middle' fill='white' font-family='sans-serif'%3EA%3C/text%3E%3C/svg%3E"
/>
<title>CF/Gears Admin Panel</title>
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/main.tsx"></script>
</body>
</html>
Loading
Loading