-
Notifications
You must be signed in to change notification settings - Fork 2
Pr/integration #456
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Pr/integration #456
Changes from all commits
Commits
Show all changes
8 commits
Select commit
Hold shift + click to select a range
f2ec315
docs: redesign About Us page with new employer profile content
moshloop 2e95bc6
chore: update arch diagram
moshloop bdbdc2c
chore: mission-control page updates
moshloop f98264b
chore: integrtations wip
moshloop 3b870e9
chore: add integration pages
moshloop e5e10a5
chore: misc updates
moshloop d4e3666
chore: fix missing file
moshloop e06d4eb
chore: fix build
moshloop File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| prompts/ | ||
| **/apm-hub/** | ||
| **/benchmark* | ||
| **/development* | ||
| **/node_modules/** | ||
| modules/ | ||
| docs/incidents/ | ||
| docs-vale-package/ | ||
| docs/apm-hub/ | ||
| scripts/ | ||
| **/style-guide/ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,4 +1,4 @@ | ||
| Choose a routable `DOMAIN` for Mission Control | ||
| > See [Ingress](/docs/installation/self-hosted/ingress) for more options on configuring the ingress including generating certs with cert-manager | ||
| > See [Ingress](/docs/installation/self-hosted) for more options on configuring the ingress including generating certs with cert-manager | ||
| > <p>See [Local Testing](/docs/installation/local-testing) for testing using a kind or minikube without a routable domain</p> | ||
|
|
||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,4 @@ | ||
|
|
||
| :::info Prerequisites | ||
| - Mission Control SaaS or Self-Hosted installed | ||
| ::: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,224 @@ | ||
| import React from 'react'; | ||
| import BrowserOnly from '@docusaurus/BrowserOnly'; | ||
| import Xarrow from 'react-xarrows'; | ||
| import { | ||
| Aws, | ||
| Azure, | ||
| K8S, | ||
| GoogleCloud, | ||
| Terraform, | ||
| Flux, | ||
| Argo, | ||
| Prometheus, | ||
| Datadog, | ||
| Github, | ||
| Postgres, | ||
| ConfigDbWhite, | ||
| CanaryCheckerWhite, | ||
| Playbook, | ||
| Mcp, | ||
| Helm, | ||
| Kustomize, | ||
| AwsCloudwatch, | ||
| Opensearch, | ||
| Dynatrace, | ||
| SqlServer, | ||
| AzureDevops, | ||
| Gitlab, | ||
| } from '@flanksource/icons/mi'; | ||
| import { PiBrain } from 'react-icons/pi'; | ||
|
|
||
| interface IconGridProps { | ||
| items: Array<{ Icon: React.ComponentType<{ className?: string }>; label?: string }>; | ||
| cols?: number; | ||
| iconSize?: string; | ||
| } | ||
|
|
||
| function IconGrid({ items, cols = 5, iconSize = 'w-6 h-6' }: IconGridProps) { | ||
| return ( | ||
| <div className="grid gap-2" style={{ gridTemplateColumns: `repeat(${cols}, minmax(0, 1fr))` }}> | ||
| {items.map(({ Icon, label }, idx) => ( | ||
| <div key={label || idx} className="flex flex-col items-center"> | ||
| <Icon className={iconSize} /> | ||
| {label && <span className="text-[9px] text-gray-500 mt-0.5">{label}</span>} | ||
| </div> | ||
| ))} | ||
| </div> | ||
| ); | ||
| } | ||
|
|
||
| interface BoxNodeProps { | ||
| id?: string; | ||
| title?: string | React.ReactNode; | ||
| className?: string; | ||
| bodyClassName?: string; | ||
| border?: 'solid' | 'dashed'; | ||
| children?: React.ReactNode; | ||
| } | ||
|
|
||
| function BoxNode({ id, title, className = '', bodyClassName = '', border = 'solid', children }: BoxNodeProps) { | ||
| const bgMatch = className.match(/bg-(\w+)-(\d+)/); | ||
| const borderClass = bgMatch ? `border-${bgMatch[1]}-${bgMatch[2]}` : 'border-slate-300'; | ||
| const borderStyle = `border-2 ${border === 'dashed' ? 'border-dashed' : 'border-solid'} ${borderClass}`; | ||
| const hasHeader = title !== undefined; | ||
|
|
||
| return ( | ||
| <div id={id} className={`rounded-xl overflow-hidden shadow-lg min-w-[120px] ${borderStyle}`}> | ||
| {hasHeader && ( | ||
| <div className={`px-3 py-2 text-center ${className}`}> | ||
| <span className="text-white text-xs font-bold">{title}</span> | ||
| </div> | ||
| )} | ||
| {children && ( | ||
| <div className={`${bodyClassName} ${hasHeader ? 'p-3' : 'p-3'}`}> | ||
| {children} | ||
| </div> | ||
| )} | ||
| </div> | ||
| ); | ||
| } | ||
|
|
||
| function K8SCRDsBox() { | ||
| return ( | ||
| <div id="arch-k8s-crds" className="flex items-center gap-3 bg-blue-600 rounded-xl px-5 py-3 shadow-lg border-2 border-blue-400"> | ||
| <K8S className="w-8 h-8 text-white" /> | ||
| <span className="text-white font-bold text-sm">K8S CRDs</span> | ||
| </div> | ||
| ); | ||
| } | ||
|
|
||
| function MissionControlBox() { | ||
| const features = [ | ||
| { Icon: CanaryCheckerWhite, label: 'Health Checks' }, | ||
| { Icon: ConfigDbWhite, label: 'Unified Catalog' }, | ||
| { Icon: Playbook, label: 'Playbooks' }, | ||
| { Icon: PiBrain, label: 'Real-Time RAG' }, | ||
| ]; | ||
|
|
||
| return ( | ||
| <div id="arch-missionControl" className="rounded-2xl overflow-hidden bg-gradient-to-br from-slate-700 to-slate-900 border-2 border-blue-500 shadow-2xl"> | ||
| <div className="px-6 py-3 text-center border-b border-blue-800/50"> | ||
| <span className="text-white text-lg font-bold tracking-wide">MISSION CONTROL</span> | ||
| </div> | ||
| <div className="p-4 flex flex-col gap-3"> | ||
| <div className="grid grid-cols-2 gap-3"> | ||
| {features.map(({ Icon, label }) => ( | ||
| <div | ||
| key={label} | ||
| className="flex items-center gap-2 bg-blue-600 hover:bg-blue-500 transition-colors rounded-lg px-3 py-2 cursor-default" | ||
| > | ||
| <Icon className="w-5 h-5 text-white" /> | ||
| <span className="text-white text-xs font-medium">{label}</span> | ||
| </div> | ||
| ))} | ||
| </div> | ||
| <div className="flex items-center justify-center gap-2 bg-slate-600 rounded-lg px-3 py-2"> | ||
| <Postgres className="w-5 h-5" /> | ||
| <span className="text-white text-xs font-medium">Postgres</span> | ||
| </div> | ||
| </div> | ||
| </div> | ||
| ); | ||
| } | ||
|
|
||
| function MCPServerBox() { | ||
| return ( | ||
| <div id="arch-mcp-server" className="flex items-center gap-3 bg-indigo-600 rounded-xl px-5 py-3 shadow-lg border-2 border-indigo-400"> | ||
| <Mcp className="w-7 h-7 text-white fill-white" /> | ||
| <span className="text-white font-bold text-sm">MCP Server</span> | ||
| </div> | ||
| ); | ||
| } | ||
|
|
||
| function IntegrationsBox() { | ||
| const integrations = [ | ||
| { Icon: Aws }, | ||
| { Icon: Azure }, | ||
| { Icon: GoogleCloud }, | ||
| { Icon: K8S }, | ||
| { Icon: Terraform }, | ||
| { Icon: Flux }, | ||
| { Icon: Argo }, | ||
| { Icon: Helm }, | ||
| { Icon: Kustomize }, | ||
| { Icon: Prometheus }, | ||
| { Icon: Datadog }, | ||
| { Icon: Dynatrace }, | ||
| { Icon: AwsCloudwatch }, | ||
| { Icon: Opensearch }, | ||
| { Icon: Postgres }, | ||
| { Icon: SqlServer }, | ||
| { Icon: Github }, | ||
| { Icon: AzureDevops }, | ||
| { Icon: Gitlab }, | ||
| { Icon: Mcp }, | ||
| ]; | ||
|
|
||
| return ( | ||
| <div id="arch-integrations"> | ||
| <BoxNode | ||
| title="40+ Integrations" | ||
| className="bg-slate-500" | ||
| bodyClassName="bg-slate-50" | ||
| border="solid" | ||
| > | ||
| <IconGrid items={integrations} cols={5} iconSize="w-7 h-7" /> | ||
| </BoxNode> | ||
| </div> | ||
| ); | ||
| } | ||
|
|
||
| interface ArchitectureDiagramProps { | ||
| className?: string; | ||
| variant?: string; | ||
| } | ||
|
|
||
| function ArchitectureDiagramInner({ className }: ArchitectureDiagramProps) { | ||
| return ( | ||
| <div className={`${className || ''} relative flex flex-col items-center gap-10 py-8`}> | ||
| <K8SCRDsBox /> | ||
| <MissionControlBox /> | ||
| <MCPServerBox /> | ||
| <IntegrationsBox /> | ||
|
|
||
| <Xarrow | ||
| start="arch-k8s-crds" | ||
| end="arch-missionControl" | ||
| color="#3b82f6" | ||
| strokeWidth={3} | ||
| startAnchor="bottom" | ||
| endAnchor="top" | ||
| headSize={4} | ||
| dashness={{ strokeLen: 10, nonStrokeLen: 5, animation: 1 }} | ||
| /> | ||
| <Xarrow | ||
| start="arch-missionControl" | ||
| end="arch-mcp-server" | ||
| color="#6366f1" | ||
| strokeWidth={3} | ||
| startAnchor="bottom" | ||
| endAnchor="top" | ||
| headSize={4} | ||
| dashness={{ strokeLen: 10, nonStrokeLen: 5, animation: 1 }} | ||
| /> | ||
| <Xarrow | ||
| start="arch-mcp-server" | ||
| end="arch-integrations" | ||
| color="#6366f1" | ||
| strokeWidth={3} | ||
| startAnchor="bottom" | ||
| endAnchor="top" | ||
| headSize={4} | ||
| dashness={{ strokeLen: 10, nonStrokeLen: 5, animation: 1 }} | ||
| /> | ||
| </div> | ||
| ); | ||
| } | ||
|
|
||
| export default function ArchitectureDiagram({ className, variant }: ArchitectureDiagramProps) { | ||
| return ( | ||
| <BrowserOnly fallback={<div className="w-full h-96 flex items-center justify-center">Loading...</div>}> | ||
| {() => <ArchitectureDiagramInner className={className} variant={variant} />} | ||
| </BrowserOnly> | ||
| ); | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,97 @@ | ||
| import React from 'react'; | ||
| import { ConfigDb, Health, Playbook, Bell, Webhook } from '@flanksource/icons/mi'; | ||
|
|
||
| const capabilities = { | ||
| scraper: { | ||
| icon: ConfigDb, | ||
| label: 'Scraper', | ||
| color: '#2563eb', | ||
| bg: '#dbeafe', | ||
| border: '#93c5fd' | ||
| }, | ||
| healthcheck: { | ||
| icon: Health, | ||
| label: 'Health Check', | ||
| color: '#d97706', | ||
| bg: '#fef3c7', | ||
| border: '#fcd34d' | ||
| }, | ||
| playbook: { | ||
| icon: Playbook, | ||
| label: 'Playbook', | ||
| color: '#7c3aed', | ||
| bg: '#ede9fe', | ||
| border: '#c4b5fd' | ||
| }, | ||
| notifications: { | ||
| icon: Bell, | ||
| label: 'Notifications', | ||
| color: '#16a34a', | ||
| bg: '#dcfce7', | ||
| border: '#86efac' | ||
| }, | ||
| actions: { | ||
| icon: Webhook, | ||
| label: 'Actions', | ||
| color: '#4f46e5', | ||
| bg: '#e0e7ff', | ||
| border: '#a5b4fc' | ||
| }, | ||
| 'relationship': { | ||
| icon: ConfigDb, | ||
| label: 'Relationship', | ||
| color: '#d97706', | ||
| bg: '#fef3c7', | ||
| border: '#fcd34d' | ||
| } | ||
| }; | ||
|
|
||
| export function CapabilityBadge({ type, label }) { | ||
| const cap = capabilities[type]; | ||
| if (!cap) return null; | ||
|
|
||
| const Icon = cap.icon; | ||
| return ( | ||
| <span | ||
| className="inline-flex items-center gap-1.5 px-3 py-1 rounded-full text-sm font-medium" | ||
| style={{ | ||
| backgroundColor: cap.bg, | ||
| color: cap.color, | ||
| border: `1px solid ${cap.border}` | ||
| }} | ||
| > | ||
| <Icon className="w-4 h-4" /> | ||
| {label || cap.label} | ||
| </span> | ||
| ); | ||
| } | ||
|
|
||
| export function CapabilityBadges({ children }) { | ||
| return ( | ||
| <div className="flex flex-wrap gap-2 mb-6 not-prose"> | ||
| {children} | ||
| </div> | ||
| ); | ||
| } | ||
|
|
||
| export function CapabilityHeading({ type }) { | ||
| const cap = capabilities[type]; | ||
| if (!cap) return null; | ||
|
|
||
| const Icon = cap.icon; | ||
| return ( | ||
| <h2 className="flex items-center gap-2 mt-8 mb-4 not-prose"> | ||
| <span | ||
| className="inline-flex items-center gap-1.5 px-3 py-1.5 rounded-full text-base font-medium" | ||
| style={{ | ||
| backgroundColor: cap.bg, | ||
| color: cap.color, | ||
| border: `1px solid ${cap.border}` | ||
| }} | ||
| > | ||
| <Icon className="w-5 h-5" /> | ||
| {cap.label} | ||
| </span> | ||
| </h2> | ||
| ); | ||
| } |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
Repository: flanksource/docs
Length of output: 42
🏁 Script executed:
Repository: flanksource/docs
Length of output: 993
🏁 Script executed:
Repository: flanksource/docs
Length of output: 192
🏁 Script executed:
Repository: flanksource/docs
Length of output: 1171
🏁 Script executed:
Repository: flanksource/docs
Length of output: 892
🏁 Script executed:
Repository: flanksource/docs
Length of output: 1912
🏁 Script executed:
Repository: flanksource/docs
Length of output: 6487
🏁 Script executed:
Repository: flanksource/docs
Length of output: 1441
🏁 Script executed:
Repository: flanksource/docs
Length of output: 451
🏁 Script executed:
Repository: flanksource/docs
Length of output: 4591
Both link targets do not exist in the canary-checker documentation.
The links at
/docs/installation/self-hostedand/docs/installation/local-testingdo not correspond to any documentation files in the canary-checker installation directory. Ingress configuration information is available in the Helm installation guide (/docs/installation/helm), but the links as currently written are broken and will fail to resolve for users.🤖 Prompt for AI Agents