-
- Stellar Provider Availability Heatmap
-
-
- Visualize provider uptime trends and outage periods over time.
-
-
- {/* Controls */}
-
-
- {(['7d', '30d', '90d'] as TimeRange[]).map((r) => (
-
- ))}
-
-
-
-
-
- {/* Heatmap */}
-
-
-
- Availability — last {range}
-
-
-
-
- {providers.map((p) => (
-
- ))}
-
+
+ {(['7d', '30d', '90d'] as TimeRange[]).map(range => (
+
+ ))}
+
+
- {/* Outage summary */}
-
- Outage periods
-
- Orange/red cells indicate degraded or unavailable service. Hover for details.
-
+
+
+
);
-}
+}
\ No newline at end of file
diff --git a/apps/dashboard/providers/availability/types.ts b/apps/dashboard/providers/availability/types.ts
new file mode 100644
index 00000000..eb0c66f8
--- /dev/null
+++ b/apps/dashboard/providers/availability/types.ts
@@ -0,0 +1,14 @@
+
+export type TimeRange = '7d' | '30d' | '90d';
+
+export interface AvailabilitySlot {
+ label: string;
+ availability: number; // 0–1
+ outage: boolean;
+}
+
+export interface ProviderAvailability {
+ provider: string;
+ slots: AvailabilitySlot[];
+ overallAvailability: number;
+}
\ No newline at end of file
diff --git a/apps/dashboard/providers/availability/utils.ts b/apps/dashboard/providers/availability/utils.ts
new file mode 100644
index 00000000..cc16bfed
--- /dev/null
+++ b/apps/dashboard/providers/availability/utils.ts
@@ -0,0 +1,8 @@
+
+export function cellColor(availability: number): string {
+ if (availability >= 0.999) return '#16a34a';
+ if (availability >= 0.995) return '#4ade80';
+ if (availability >= 0.98) return '#fbbf24';
+ if (availability >= 0.95) return '#f97316';
+ return '#ef4444';
+}
\ No newline at end of file
diff --git a/src/jobs/assets/sync/stellar/fetcher.ts b/src/jobs/assets/sync/stellar/fetcher.ts
new file mode 100644
index 00000000..fc71e5c5
--- /dev/null
+++ b/src/jobs/assets/sync/stellar/fetcher.ts
@@ -0,0 +1,11 @@
+
+import { Asset } from './types';
+
+// Mock implementation of a fetcher for Stellar assets
+export async function fetchLatestAssets(): Promise