feat: scaffold React SPA with Vite, design system, and TypeScript types
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
8
ui/src/main.tsx
Normal file
8
ui/src/main.tsx
Normal file
@@ -0,0 +1,8 @@
|
||||
import React from 'react';
|
||||
import ReactDOM from 'react-dom/client';
|
||||
|
||||
ReactDOM.createRoot(document.getElementById('root')!).render(
|
||||
<React.StrictMode>
|
||||
<div>Cameleer SaaS</div>
|
||||
</React.StrictMode>
|
||||
);
|
||||
85
ui/src/types/api.ts
Normal file
85
ui/src/types/api.ts
Normal file
@@ -0,0 +1,85 @@
|
||||
export interface TenantResponse {
|
||||
id: string;
|
||||
name: string;
|
||||
slug: string;
|
||||
tier: string;
|
||||
status: string;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
export interface EnvironmentResponse {
|
||||
id: string;
|
||||
tenantId: string;
|
||||
slug: string;
|
||||
displayName: string;
|
||||
status: string;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
export interface AppResponse {
|
||||
id: string;
|
||||
environmentId: string;
|
||||
slug: string;
|
||||
displayName: string;
|
||||
jarOriginalFilename: string | null;
|
||||
jarSizeBytes: number | null;
|
||||
jarChecksum: string | null;
|
||||
exposedPort: number | null;
|
||||
routeUrl: string | null;
|
||||
currentDeploymentId: string | null;
|
||||
previousDeploymentId: string | null;
|
||||
createdAt: string;
|
||||
updatedAt: string;
|
||||
}
|
||||
|
||||
export interface DeploymentResponse {
|
||||
id: string;
|
||||
appId: string;
|
||||
version: number;
|
||||
imageRef: string;
|
||||
desiredStatus: string;
|
||||
observedStatus: string;
|
||||
errorMessage: string | null;
|
||||
orchestratorMetadata: Record<string, unknown>;
|
||||
deployedAt: string | null;
|
||||
stoppedAt: string | null;
|
||||
createdAt: string;
|
||||
}
|
||||
|
||||
export interface LicenseResponse {
|
||||
id: string;
|
||||
tenantId: string;
|
||||
tier: string;
|
||||
features: Record<string, boolean>;
|
||||
limits: Record<string, number>;
|
||||
issuedAt: string;
|
||||
expiresAt: string;
|
||||
token: string;
|
||||
}
|
||||
|
||||
export interface AgentStatusResponse {
|
||||
registered: boolean;
|
||||
state: string;
|
||||
lastHeartbeat: string | null;
|
||||
routeIds: string[];
|
||||
applicationId: string;
|
||||
environmentId: string;
|
||||
}
|
||||
|
||||
export interface ObservabilityStatusResponse {
|
||||
hasTraces: boolean;
|
||||
hasMetrics: boolean;
|
||||
hasDiagrams: boolean;
|
||||
lastTraceAt: string | null;
|
||||
traceCount24h: number;
|
||||
}
|
||||
|
||||
export interface LogEntry {
|
||||
appId: string;
|
||||
deploymentId: string;
|
||||
timestamp: string;
|
||||
stream: string;
|
||||
message: string;
|
||||
}
|
||||
Reference in New Issue
Block a user