diff --git a/public/home/behold.png b/public/home/behold.png new file mode 100644 index 0000000..0a6ebef Binary files /dev/null and b/public/home/behold.png differ diff --git a/scripts/lint-prose.mjs b/scripts/lint-prose.mjs index 812e6f3..e32d0f8 100644 --- a/scripts/lint-prose.mjs +++ b/scripts/lint-prose.mjs @@ -59,6 +59,7 @@ for (const file of files) { .replace(/^---\n[\s\S]*?\n---\n/, (s) => s.replace(/^---$/gm, " ")) .replace(/^import .*$/gm, (m) => " ".repeat(m.length)) .replace(/<[A-Z][\s\S]*?\/>/g, (m) => " ".repeat(m.length)) + .replace(/<\/?[A-Z][^>]*>/g, (m) => " ".repeat(m.length)) // wrapper tags such as and .replace(/^(\s*)[-*+] /gm, (m) => " ".repeat(m.length)) // Heading markers are punctuation, not words: blank the hashes and keep // the heading text, so a run of short sections is not read as anaphora. diff --git a/src/components/Home.astro b/src/components/Home.astro new file mode 100644 index 0000000..c23ab4d --- /dev/null +++ b/src/components/Home.astro @@ -0,0 +1,384 @@ +--- +// The home page's sections. Each part wraps prose written in index.mdx, so +// the words stay in the one file the prose lint reads and this file only +// lays them out. +// hero the eye, the headline, one line and two buttons +// pillars an optional heading and line, then "**label** line" items as cards +// steps the reader's delivery steps as a row of tiles (an ordered list) +// tools a list of links laid out as cards +// code prose, then code blocks in a grid of `cols` columns (3 by default) +// behold prose beside a screenshot of the demo +// contact the closing band +interface Props { + part: 'hero' | 'pillars' | 'steps' | 'tools' | 'code' | 'behold' | 'contact'; + img?: string; + alt?: string; + href?: string; + cols?: number; +} +const { part, img, alt = '', href, cols = 3 } = Astro.props; +--- +{part === 'hero' && ( +
+ + +
+)} +{part === 'pillars' &&
} +{part === 'steps' &&
} +{part === 'tools' &&
} +{part === 'code' &&
} +{part === 'behold' && ( +
+
+ {alt} +
+)} +{part === 'contact' &&
} + + diff --git a/src/content/docs/index.mdx b/src/content/docs/index.mdx index 67eaa56..07ac8b7 100644 --- a/src/content/docs/index.mdx +++ b/src/content/docs/index.mdx @@ -1,50 +1,103 @@ --- title: Intentius -description: An infrastructure consultancy. I build open-source tools and help teams put them to work. +description: "From intent to delivery. Infrastructure and software on every cloud, with jobs on GitHub, GitLab or Forgejo." template: splash tableOfContents: false +wide: true --- -import Landing from '../../components/Landing.astro'; -import Arenas from '../../components/Arenas.astro'; -import { LEAD, CONTROL, TERRAFORM, PULUMI, BEHOLD } from '../../data/compare-platforms.mjs'; +import Home from '../../components/Home.astro'; - + - +# from intent to delivery -Skip to [Terraform in detail](#terraform-in-detail) or [Pulumi in detail](#pulumi-in-detail) if you run one engine. +where you already are -## The control plane +[Contact me](/contact/) +[Open the demo](https://demo.intentius.io/) -behold against the HCP Terraform, Pulumi Cloud and Spacelift consoles, across both engines. + - -## Terraform in detail + -terragucci and choudoufu against HCP Terraform and Spacelift. +- **Change control** Every change is planned, approved and recorded before it reaches the cloud. +- **Drift** If someone changes the cloud by hand, chant finds it and opens a pull request. +- **Releases** Each component releases on its own, signed. chant writes the pipelines. - + -## Pulumi in detail + -plywood and plunge against Pulumi Cloud, and against Spacelift where it runs Pulumi. Pulumi calls a plan a preview, and an apply an update. +## Your delivery, step by step - +Most teams do these five steps. chant writes each step as a job in GitHub, GitLab or Forgejo. You keep the steps you have and add the ones you need. -## behold across both engines +1. Build and test - + Each change is built and tested. -## Help me +2. Plan - + See exactly what will change before it happens. -## Open source +3. Approve -The tools are free, and the docs for each are on its own site. + Someone approves that exact change. Every approval is recorded. - +4. Release -[All the tools](/tools/), or [what I do with them](/work/). + The change goes out. For software, chant signs and publishes the release. + +5. Watch + + Know what is running and when it changes. + + + + + +## Terraform and Pulumi are optional + +chant writes each cloud's own format, such as CloudFormation. The cloud runs it, and there is no state file. + +- **Clear ownership** Each resource carries a label that names its team. chant never deletes anything without one. +- **No waiting** Teams change different resources at the same time. There is no shared lock. +- **Your IAM** The cloud permissions you already have are the gate. There is no extra tool to manage. +- **No lock-in** If you stop using chant, you keep everything it wrote. + + + + + +## See all of it + +[behold](https://intentius.io/behold/) shows Terraform, Pulumi and chant resources in one view. During a move, you can see both sides. + +[Open the demo](https://demo.intentius.io/) + + + + + +## Keep your engine for now + +Add the delivery steps to what you run today. When you are ready, chant carve moves Terraform resources to the cloud's own format, one at a time. Nothing is deleted or created again. + +- [terragucci](https://intentius.io/terragucci/) for Terraform and OpenTofu teams +- [plywood](https://intentius.io/plywood/) for Pulumi teams + +See how they [compare](/compare/terraform-platforms/) with HCP Terraform, Pulumi Cloud and Spacelift. For SQL teams, there is [SQL Yodeler](https://intentius.io/sql-yodeler/). + + + + + +## Work with me + +The tools are free. I'm available to help. + +[Tell me how your team delivers today](/contact/) + +