diff --git a/astro.config.mjs b/astro.config.mjs
index 34706d9..8eb2634 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -1,140 +1,143 @@
-import "dotenv/config";
-import { defineConfig } from "astro/config";
-import starlight from "@astrojs/starlight";
-import tailwind from "@astrojs/tailwind";
+import 'dotenv/config'
+import { defineConfig } from 'astro/config'
+import starlight from '@astrojs/starlight'
+import tailwind from '@astrojs/tailwind'
// SEE: https://developers.google.com/analytics/devguides/collection/gtagjs
-const gaTrackingID = process.env.GA_TRACKING_ID;
-const gaSrc = `https://www.googletagmanager.com/gtag/js?id=${gaTrackingID}`;
+const gaTrackingID = process.env.GA_TRACKING_ID
+const gaSrc = `https://www.googletagmanager.com/gtag/js?id=${gaTrackingID}`
// SEE: https://plausible.io/docs/plausible-script
-const plausibleDomain = process.env.PLAUSIBLE_DOMAIN;
+const plausibleDomain = process.env.PLAUSIBLE_DOMAIN
const plausibleSrc =
- process.env.PLAUSIBLE_SRC || "https://plausible.io/js/script.js";
+ process.env.PLAUSIBLE_SRC || 'https://plausible.io/js/script.js'
-const head = [];
+const head = []
if (gaTrackingID) {
head.push(
{
- tag: "script",
+ tag: 'script',
attrs: {
src: gaSrc,
async: true,
},
},
{
- tag: "script",
+ tag: 'script',
content: `
window.dataLayer = window.dataLayer || [];
function gtag(){window.dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '${gaTrackingID}');
`,
- }
- );
+ },
+ )
}
if (plausibleDomain && plausibleSrc) {
head.push({
- tag: "script",
+ tag: 'script',
attrs: {
src: plausibleSrc,
- "data-domain": plausibleDomain,
+ 'data-domain': plausibleDomain,
defer: true,
},
- });
+ })
}
head.push(
{
- tag: "link",
+ tag: 'link',
attrs: {
- rel: "apple-touch-icon",
- href: "/apple-touch-icon.png",
- sizes: "180x180",
+ rel: 'apple-touch-icon',
+ href: '/apple-touch-icon.png',
+ sizes: '180x180',
},
},
{
- tag: "link",
+ tag: 'link',
attrs: {
- rel: "icon",
- type: "image/png",
- href: "/favicon-32x32.png",
- sizes: "32x32",
+ rel: 'icon',
+ type: 'image/png',
+ href: '/favicon-32x32.png',
+ sizes: '32x32',
},
},
{
- tag: "link",
+ tag: 'link',
attrs: {
- rel: "icon",
- type: "image/png",
- href: "/favicon-16x16.png",
- sizes: "16x16",
+ rel: 'icon',
+ type: 'image/png',
+ href: '/favicon-16x16.png',
+ sizes: '16x16',
},
},
{
- tag: "link",
+ tag: 'link',
attrs: {
- rel: "manifest",
- href: "/site.webmanifest",
+ rel: 'manifest',
+ href: '/site.webmanifest',
},
},
{
- tag: "link",
+ tag: 'link',
attrs: {
- rel: "mask-icon",
- href: "/safari-pinned-tab.svg",
- color: "#7cc6fe",
+ rel: 'mask-icon',
+ href: '/safari-pinned-tab.svg',
+ color: '#7cc6fe',
},
},
{
- tag: "meta",
+ tag: 'meta',
attrs: {
- name: "msapplication-TileColor",
- content: "#7cc6fe",
+ name: 'msapplication-TileColor',
+ content: '#7cc6fe',
},
},
{
- tag: "meta",
+ tag: 'meta',
attrs: {
- name: "theme-color",
- content: "#bee1ff",
+ name: 'theme-color',
+ content: '#bee1ff',
},
- }
-);
+ },
+)
// https://astro.build/config
export default defineConfig({
integrations: [
starlight({
- title: "grlx Docs",
+ title: 'grlx Docs',
description:
- "Documentation for grlx. Fleet configuration management that is low overhead, dependency free, and easy to install.",
+ 'Documentation for grlx. Fleet configuration management that is low overhead, dependency free, and easy to install.',
components: {
- Head: "./src/components/Transitions.astro",
- Footer: "./src/components/AdatomicFooter.astro",
+ Footer: './src/components/AdatomicFooter.astro',
},
- customCss: ["./src/tailwind.css"],
- defaultLocale: "root",
+ customCss: ['./src/tailwind.css'],
+ defaultLocale: 'root',
locales: {
root: {
- label: "English",
- lang: "en", // lang is required for root locales
+ label: 'English',
+ lang: 'en', // lang is required for root locales
},
},
- favicon: "/favicon.ico",
+ favicon: '/favicon.ico',
head,
- logo: { src: "./src/assets/grlx.webp" },
+ logo: { src: './src/assets/grlx.webp' },
social: {
- github: "https://github.com/gogrlx/grlx",
- "x.com": "https://x.com/gogrlx",
+ github: 'https://github.com/gogrlx/grlx',
+ 'x.com': 'https://x.com/gogrlx',
},
sidebar: [
- { label: "Getting Started", link: "/getting-started" },
+ { label: 'Getting Started', link: '/getting-started' },
{
- label: "Ingredients",
- autogenerate: { directory: "ingredients" },
+ label: 'Ingredients',
+ autogenerate: { directory: 'ingredients' },
+ },
+ {
+ label: 'Architecture',
+ autogenerate: { directory: 'architecture' },
},
],
}),
@@ -143,5 +146,5 @@ export default defineConfig({
applyBaseStyles: false,
}),
],
- site: "https://doc.grlx.dev",
-});
+ site: 'https://doc.grlx.dev',
+})
diff --git a/src/components/Transitions.astro b/src/components/Transitions.astro
deleted file mode 100644
index 4386d67..0000000
--- a/src/components/Transitions.astro
+++ /dev/null
@@ -1,8 +0,0 @@
----
-import type { Props } from '@astro/starlight/props'
-import Default from '@astrojs/starlight/components/Head.astro'
-import { ViewTransitions } from 'astro:transitions'
----
-
-
-<
diff --git a/src/content/docs/architecture/overview.md b/src/content/docs/architecture/overview.md
new file mode 100644
index 0000000..64d4c26
--- /dev/null
+++ b/src/content/docs/architecture/overview.md
@@ -0,0 +1,19 @@
+---
+title: Overview
+description: A brief description of the grlx architecture
+---
+At a high level our architecture looks like the following:
+
+We can boil down the `grlx` into three different parts: the farmer, the sprout, and the CLI.
+
+## Farmer
+
+The farmer is your control server. This has analogs in other similar configuration platforms. In SaltStack, this is your Salt Master, or in Chef, your Chef Server. `grlx` utilizes the farmer for things like authentication, job processing, and [ingredients](/architecture/overview#ingredients).
+
+## Sprout
+
+The sprout is what the farmer manages. This is similar to a Salt Minion in SaltStack or a Chef Client in Chef. Jobs are received from the farmer over the NATS message bus for actions to be performed on the sprout itself.
+
+## CLI
+
+## Ingredients