chore: rename cameleer3 to cameleer
Rename Java packages from net.siegeln.cameleer3 to net.siegeln.cameleer, update all references in workflows, Docker configs, docs, and bootstrap. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -7,19 +7,19 @@
|
||||
|
||||
## Context
|
||||
|
||||
Phases 1-4 built the complete backend: tenants, licensing, environments, app deployment with JAR upload, async deployment pipeline, container logs, agent status, observability status, and inbound HTTP routing. The cameleer3-server observability dashboard is already served at `/dashboard`. But there is no management UI — all operations require curl/API calls.
|
||||
Phases 1-4 built the complete backend: tenants, licensing, environments, app deployment with JAR upload, async deployment pipeline, container logs, agent status, observability status, and inbound HTTP routing. The cameleer-server observability dashboard is already served at `/dashboard`. But there is no management UI — all operations require curl/API calls.
|
||||
|
||||
Phase 9 adds the SaaS management shell: a React SPA for managing tenants, environments, apps, and deployments. The observability UI is already handled by cameleer3-server — this shell covers everything else.
|
||||
Phase 9 adds the SaaS management shell: a React SPA for managing tenants, environments, apps, and deployments. The observability UI is already handled by cameleer-server — this shell covers everything else.
|
||||
|
||||
## Key Decisions
|
||||
|
||||
| Decision | Choice | Rationale |
|
||||
|----------|--------|-----------|
|
||||
| Location | `ui/` directory in cameleer-saas repo | Matches cameleer3-server pattern. Single build pipeline. Spring Boot serves the SPA. |
|
||||
| Location | `ui/` directory in cameleer-saas repo | Matches cameleer-server pattern. Single build pipeline. Spring Boot serves the SPA. |
|
||||
| Relationship to dashboard | Two separate SPAs, linked via navigation | SaaS shell at `/`, observability at `/dashboard`. Same design system = cohesive feel. No coupling. |
|
||||
| Layout | Sidebar navigation | Consistent with cameleer3-server dashboard. Same AppShell pattern from design system. |
|
||||
| Layout | Sidebar navigation | Consistent with cameleer-server dashboard. Same AppShell pattern from design system. |
|
||||
| Auth | Shared Logto OIDC session | Same client ID, same localStorage keys. True SSO between SaaS shell and observability dashboard. |
|
||||
| Tech stack | React 19 + Vite + React Router + Zustand + TanStack Query | Identical to cameleer3-server SPA. Same patterns, same libraries, same conventions. |
|
||||
| Tech stack | React 19 + Vite + React Router + Zustand + TanStack Query | Identical to cameleer-server SPA. Same patterns, same libraries, same conventions. |
|
||||
| Design system | `@cameleer/design-system` v0.1.31 | Shared component library. CSS Modules + design tokens. Dark theme. |
|
||||
| RBAC | Frontend role-based visibility | Roles from JWT claims. Hide/disable UI for unauthorized actions. Backend enforces — frontend is UX only. |
|
||||
|
||||
@@ -39,7 +39,7 @@ Phase 9 adds the SaaS management shell: a React SPA for managing tenants, enviro
|
||||
2. If not authenticated, redirect to Logto OIDC authorize endpoint
|
||||
3. Logto callback at `/callback` — exchange code for tokens
|
||||
4. Store `accessToken`, `refreshToken`, `username`, `roles` in Zustand + localStorage
|
||||
5. Tokens stored with same keys as cameleer3-server SPA: `cameleer-access-token`, `cameleer-refresh-token`
|
||||
5. Tokens stored with same keys as cameleer-server SPA: `cameleer-access-token`, `cameleer-refresh-token`
|
||||
6. API client injects `Authorization: Bearer {token}` on all requests
|
||||
7. On 401, attempt token refresh; on failure, redirect to login
|
||||
|
||||
@@ -128,7 +128,7 @@ Frontend RBAC implementation:
|
||||
|
||||
- Sidebar uses `Sidebar` + `TreeView` components from design system
|
||||
- Environment → App hierarchy is collapsible
|
||||
- "View Dashboard" is an external link to `/dashboard` (cameleer3-server SPA)
|
||||
- "View Dashboard" is an external link to `/dashboard` (cameleer-server SPA)
|
||||
- Sidebar collapses on small screens (responsive)
|
||||
|
||||
## API Integration
|
||||
@@ -181,7 +181,7 @@ ui/
|
||||
│ ├── main.tsx — React root + providers
|
||||
│ ├── router.tsx — React Router config
|
||||
│ ├── auth/
|
||||
│ │ ├── auth-store.ts — Zustand store (same keys as cameleer3-server)
|
||||
│ │ ├── auth-store.ts — Zustand store (same keys as cameleer-server)
|
||||
│ │ ├── LoginPage.tsx
|
||||
│ │ ├── CallbackPage.tsx
|
||||
│ │ └── ProtectedRoute.tsx
|
||||
@@ -302,14 +302,14 @@ import { ThemeProvider, ToastProvider, BreadcrumbProvider } from '@cameleer/desi
|
||||
6. Deploy triggers async deployment, status polls and updates live
|
||||
7. Agent status shows registered/connected
|
||||
8. Container logs stream in LogViewer
|
||||
9. "View Dashboard" link navigates to `/dashboard` (cameleer3-server SPA)
|
||||
9. "View Dashboard" link navigates to `/dashboard` (cameleer-server SPA)
|
||||
10. Shared auth: no re-login when switching between SPAs
|
||||
11. RBAC: VIEWER cannot see deploy button, DEVELOPER cannot delete environments
|
||||
12. Production build: `npm run build` + `mvn package` produces JAR with embedded SPA
|
||||
|
||||
## What Phase 9 Does NOT Touch
|
||||
|
||||
- No changes to cameleer3-server or its SPA
|
||||
- No changes to cameleer-server or its SPA
|
||||
- No billing UI (Phase 6)
|
||||
- No team management (Logto org admin — deferred)
|
||||
- No tenant settings/profile page
|
||||
|
||||
Reference in New Issue
Block a user