diff --git a/apps/docs/package.json b/apps/docs/package.json index 925c0097..2ea2feb1 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -7,9 +7,11 @@ "dev": "next dev -p 3001", "build": "next build", "start": "next start -p 3001", - "lint": "eslint", + "lint": "eslint && pnpm check-links", "build:docker": "docker build -f apps/docs/Dockerfile -t docs .", - "format": "prettier --check . --ignore-path ../../.gitignore" + "format": "prettier --check . --ignore-path ../../.gitignore", + "typecheck": "tsc --noEmit --emitDeclarationOnly false", + "check-links": "linkinator http://localhost:3001 --silent --timeout 5000" }, "dependencies": { "@ctrlplane/ui": "workspace:*", @@ -30,6 +32,7 @@ "@types/react": "catalog:react18", "@types/react-dom": "catalog:react18", "eslint": "catalog:", + "linkinator": "^6.1.2", "postcss-load-config": "^6.0.1", "prettier": "catalog:", "tailwindcss": "catalog:", diff --git a/apps/docs/pages/index.mdx b/apps/docs/pages/index.mdx index d3f18482..53ccf791 100644 --- a/apps/docs/pages/index.mdx +++ b/apps/docs/pages/index.mdx @@ -39,7 +39,7 @@ setup more efficient, secure, and easy to manage } title="Core Concepts" - href="/core-concepts" + href="/core-concepts/systems" /> } diff --git a/apps/docs/pages/integrations.mdx b/apps/docs/pages/integrations.mdx new file mode 100644 index 00000000..4172ef41 --- /dev/null +++ b/apps/docs/pages/integrations.mdx @@ -0,0 +1,41 @@ +--- +title: Integrations Overview +--- + +# Integrations Overview + +Integrations allow you to connect Ctrlplane with various services, enhancing +your deployment capabilities and workflows. Below are the available integrations +you can set up. + +## Available Integrations + +import { Cards } from "nextra/components"; +import { SiGithub, SiGooglecloud, SiKubernetes } from "react-icons/si"; + + + } + title="GitHub" + href="/integrations/github" + /> + } + title="Google Cloud" + href="/integrations/google" + /> + } + title="Kubernetes" + href="/integrations/kubernetes" + /> + + +## How to Set Up Integrations + +To set up an integration, follow the specific instructions provided in the +respective integration documentation. Ensure you have the necessary permissions +and configurations in place to connect Ctrlplane with the external service. + +For more detailed information on each integration, please refer to the links +provided in the cards above. diff --git a/apps/docs/pages/self-hosted/overview.mdx b/apps/docs/pages/self-hosted.mdx similarity index 97% rename from apps/docs/pages/self-hosted/overview.mdx rename to apps/docs/pages/self-hosted.mdx index 96a98bdf..f2243436 100644 --- a/apps/docs/pages/self-hosted/overview.mdx +++ b/apps/docs/pages/self-hosted.mdx @@ -1,3 +1,7 @@ +--- +title: Self-hosted +--- + # Overview Ctrlplane is still in its early days, not everything is perfect yet, and hiccups diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d2287986..2b1ed420 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -144,6 +144,9 @@ importers: eslint: specifier: 'catalog:' version: 9.11.1(jiti@2.1.0) + linkinator: + specifier: ^6.1.2 + version: 6.1.2 postcss-load-config: specifier: ^6.0.1 version: 6.0.1(jiti@2.1.0)(postcss@8.4.47)(tsx@4.19.1)(yaml@2.5.1) @@ -1382,7 +1385,7 @@ importers: version: 1.13.4(eslint@9.11.1(jiti@2.1.0)) eslint-plugin-import: specifier: ^2.29.1 - version: 2.30.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.1.0))(typescript@5.6.2))(eslint@9.11.1(jiti@2.1.0)) + version: 2.30.0(eslint@9.11.1(jiti@2.1.0)) eslint-plugin-jsx-a11y: specifier: ^6.9.0 version: 6.10.0(eslint@9.11.1(jiti@2.1.0)) @@ -5714,6 +5717,10 @@ packages: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} engines: {node: '>=10'} + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + change-case@3.1.0: resolution: {integrity: sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw==} @@ -6323,9 +6330,22 @@ packages: dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + + domelementtype@2.3.0: + resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + dompurify@3.1.7: resolution: {integrity: sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==} + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dot-case@2.1.1: resolution: {integrity: sha512-HnM6ZlFqcajLsyudHq7LeeLDr2rFAVYtDv/hV5qchQEidSck8j9OPUsXY9KwJv/lHMtYlX4DjRQqwFYa+0r8Ug==} @@ -7215,6 +7235,9 @@ packages: html-void-elements@3.0.0: resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} + htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + http-errors@2.0.0: resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} engines: {node: '>= 0.8'} @@ -7741,6 +7764,11 @@ packages: lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + linkinator@6.1.2: + resolution: {integrity: sha512-PndSrQe21Hf4sn2vZldEzJmD0EUJbIsEy4jcZLcHd6IZfQ6rC6iv+Fwo666TWM9DcXjbCrHpxnVX6xaGrcJ/eA==} + engines: {node: '>=18'} + hasBin: true + load-script@1.0.0: resolution: {integrity: sha512-kPEjMFtZvwL9TaZo0uZ2ml+Ye9HUMmPwbYRJ324qF9tqMejwykJ5ggTyvzmrbBeapCAbk98BSbTeovHEEP1uCA==} @@ -7947,6 +7975,10 @@ packages: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + merge-descriptors@1.0.3: resolution: {integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==} @@ -8095,6 +8127,11 @@ packages: engines: {node: '>=4'} hasBin: true + mime@4.0.4: + resolution: {integrity: sha512-v8yqInVjhXyqP6+Kw4fV3ZzeMRqEW6FotRsKXjRS5VMTNIuXsdRoAvklpoRgSqXm6o9VNH4/C0mgedko9DdLsQ==} + engines: {node: '>=16'} + hasBin: true + mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -9269,6 +9306,9 @@ packages: resolution: {integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==} engines: {node: '>= 0.8.0'} + server-destroy@1.0.1: + resolution: {integrity: sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==} + set-function-length@1.2.2: resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} engines: {node: '>= 0.4'} @@ -9410,6 +9450,10 @@ packages: sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} + srcset@5.0.1: + resolution: {integrity: sha512-/P1UYbGfJVlxZag7aABNRrulEXAwCSDo7fklafOQrantuPTDmYgijJMks2zusPCVzgW9+4P69mq7w6pYuZpgxw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + sshpk@1.18.0: resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} engines: {node: '>=0.10.0'} @@ -15304,6 +15348,8 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 + chalk@5.3.0: {} + change-case@3.1.0: dependencies: camel-case: 3.0.0 @@ -15947,8 +15993,26 @@ snapshots: '@babel/runtime': 7.25.6 csstype: 3.1.3 + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + + domelementtype@2.3.0: {} + + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + dompurify@3.1.7: {} + domutils@3.1.0: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dot-case@2.1.1: dependencies: no-case: 2.3.2 @@ -16289,17 +16353,16 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.1.0))(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.11.1(jiti@2.1.0)): + eslint-module-utils@2.12.0(eslint-import-resolver-node@0.3.9)(eslint@9.11.1(jiti@2.1.0)): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@2.1.0))(typescript@5.6.2) eslint: 9.11.1(jiti@2.1.0) eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.30.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.1.0))(typescript@5.6.2))(eslint@9.11.1(jiti@2.1.0)): + eslint-plugin-import@2.30.0(eslint@9.11.1(jiti@2.1.0)): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.8 @@ -16310,7 +16373,7 @@ snapshots: doctrine: 2.1.0 eslint: 9.11.1(jiti@2.1.0) eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(@typescript-eslint/parser@8.7.0(eslint@9.11.1(jiti@2.1.0))(typescript@5.6.2))(eslint-import-resolver-node@0.3.9)(eslint@9.11.1(jiti@2.1.0)) + eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint@9.11.1(jiti@2.1.0)) hasown: 2.0.2 is-core-module: 2.15.1 is-glob: 4.0.3 @@ -16320,8 +16383,6 @@ snapshots: object.values: 1.2.0 semver: 6.3.1 tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.7.0(eslint@9.11.1(jiti@2.1.0))(typescript@5.6.2) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -17208,6 +17269,13 @@ snapshots: html-void-elements@3.0.0: {} + htmlparser2@9.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + http-errors@2.0.0: dependencies: depd: 2.0.0 @@ -17767,6 +17835,22 @@ snapshots: lines-and-columns@1.2.4: {} + linkinator@6.1.2: + dependencies: + chalk: 5.3.0 + escape-html: 1.0.3 + gaxios: 6.7.1 + glob: 10.4.5 + htmlparser2: 9.1.0 + marked: 13.0.3 + meow: 13.2.0 + mime: 4.0.4 + server-destroy: 1.0.1 + srcset: 5.0.1 + transitivePeerDependencies: + - encoding + - supports-color + load-script@1.0.0: {} load-tsconfig@0.2.5: {} @@ -18089,6 +18173,8 @@ snapshots: media-typer@0.3.0: {} + meow@13.2.0: {} + merge-descriptors@1.0.3: {} merge-stream@2.0.0: {} @@ -18419,6 +18505,8 @@ snapshots: mime@1.6.0: {} + mime@4.0.4: {} + mimic-fn@2.1.0: {} minimatch@3.1.2: @@ -19871,6 +19959,8 @@ snapshots: transitivePeerDependencies: - supports-color + server-destroy@1.0.1: {} + set-function-length@1.2.2: dependencies: define-data-property: 1.1.4 @@ -20028,6 +20118,8 @@ snapshots: sprintf-js@1.1.3: {} + srcset@5.0.1: {} + sshpk@1.18.0: dependencies: asn1: 0.2.6