first commit

This commit is contained in:
jon brookes 2025-08-13 15:48:45 +01:00
parent c884330ca9
commit dcc2f600ae
16 changed files with 9152 additions and 0 deletions

7
.gitignore vendored Normal file
View file

@ -0,0 +1,7 @@
node_modules
.DS_Store
dist
*.local
.vite-inspect
.remote-assets
components.d.ts

3
.npmrc Normal file
View file

@ -0,0 +1,3 @@
# for pnpm
shamefully-hoist=true
auto-install-peers=true

37
components/Counter.vue Normal file
View file

@ -0,0 +1,37 @@
<script setup lang="ts">
import { ref } from 'vue'
const props = defineProps({
count: {
default: 0,
},
})
const counter = ref(props.count)
</script>
<template>
<div flex="~" w="min" border="~ main rounded-md">
<button
border="r main"
p="2"
font="mono"
outline="!none"
hover:bg="gray-400 opacity-20"
@click="counter -= 1"
>
-
</button>
<span m="auto" p="2">{{ counter }}</span>
<button
border="l main"
p="2"
font="mono"
outline="!none"
hover:bg="gray-400 opacity-20"
@click="counter += 1"
>
+
</button>
</div>
</template>

BIN
infctl.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

16
netlify.toml Normal file
View file

@ -0,0 +1,16 @@
[build]
publish = "dist"
command = "npm run build"
[build.environment]
NODE_VERSION = "20"
[[redirects]]
from = "/.well-known/*"
to = "/.well-known/:splat"
status = 200
[[redirects]]
from = "/*"
to = "/index.html"
status = 200

BIN
og-image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 737 KiB

8763
package-lock.json generated Normal file

File diff suppressed because it is too large Load diff

19
package.json Normal file
View file

@ -0,0 +1,19 @@
{
"name": "nov-2025-mvk",
"type": "module",
"private": true,
"scripts": {
"build": "slidev build",
"dev": "slidev --open",
"export": "slidev export"
},
"dependencies": {
"@slidev/cli": "^52.1.0",
"@slidev/theme-default": "latest",
"@slidev/theme-seriph": "latest",
"vue": "^3.5.18"
},
"devDependencies": {
"playwright-chromium": "^1.54.2"
}
}

64
pages/config-slide.md Normal file
View file

@ -0,0 +1,64 @@
---
level: 2
---
# Configuration
Configuration is based on a list of simple JSON objects.
````md magic-move {lines: true}
```js {1,12|2-10}
[
{
"name": "...",
"function": "...",
"params": [
"..."
],
"retryCount": int,
"shouldAbort": true|false
},
{}
]
```
```js {2-10}
[
{
"name": "ensure infctl namespace exists",
"function": "k8sNamespaceExists",
"params": [
"infctl"
],
"retryCount": 0,
"shouldAbort": true
},
{}
]
```
```js
[
{
"name": "ensure infctl namespace exists",
"function": "k8sNamespaceExists",
"params": [
"infctl"
],
"retryCount": 0,
"shouldAbort": true
},
{
"name": "check operator"",
"function": "RunCommand",
"params": [
"./scripts/check__operator.sh"
],
"retryCount": 5,
"shouldAbort": true
}
]
```
````

27
pages/imported-slides.md Normal file
View file

@ -0,0 +1,27 @@
# Imported Slides
You can split your slides.md into multiple files and organize them as you want using the `src` attribute.
#### `slides.md`
```markdown
# Page 1
Page 2 from main entry.
---
## src: ./subpage.md
```
<br>
#### `subpage.md`
```markdown
# Page 2
Page 2 from another file.
```
[Learn more](https://sli.dev/guide/syntax.html#importing-slides)

39
pages/infctl-summary.md Normal file
View file

@ -0,0 +1,39 @@
# Alpha release
<div grid="~ cols-2 gap-4">
<div>
`infctl` is an early release.
treat is as 'Alpha'.
Its a sketch of ideas I've been working on for decades.
I'd like to share it as I code it and use it.
Open to ideas, comments, contribution and collaboration.
License: [GNU General Public License](https://www.gnu.org/licenses/gpl-3.0.en.html)
Check out [https://codeberg.org/headshed/infctl-cli](https://codeberg.org/headshed/infctl-cli) for more.
</div>
<div>
<img src="/infctl.png">
</div>
</div>
<!--
Presenter note with **bold**, *italic*, and ~~striked~~ text.
Also, HTML elements are valid:
<div class="flex w-full">
<span style="flex-grow: 1;">Left content</span>
<span>Right content</span>
</div>
-->

22
pages/intro-slide.md Normal file
View file

@ -0,0 +1,22 @@
# What is Minimal Viable Kubernetes?
MVK is kubernetes for the impatient and impeverished, and consists the following features
- ≥ **CLI** - Living in the terminal, uses [`infctl`](https://mvk.headshed.dev/guides/intro/) command line pipeline
- 🧑‍💻 **Startup Friendly** - Getting a functional stack quickly and simply
- 🤹 **Automated** - Focus on an infrastructure as code
- 🎥 **Repeatable** - Repeatable, re-useable and predictable.
- 📤 **Portable** - Kubernetes that can run anywhere
- 🛠 **Hackable** - Simple to modify, extend and prototype
<br>
<br>
<div mt-20 v-click>
See a [Demo that goes terribly wrong](http://ascii.headshed.dev/a/f8S5WqD7OyCzkTcoPZhCSnefX?t=30)
Then see [one that goes right](http://ascii.headshed.dev/a/jSYcC7p4pbkMdf1B07rQOiIa0?t=01:30)
</div>

30
pages/plugins-slide.md Normal file
View file

@ -0,0 +1,30 @@
---
level: 2
---
# Plugins
Plugins are any script or executable that print output and exit with a number.
````md magic-move {lines: true}
```bash
#!/usr/bin/env bash
echo "HI THERE..."
exit 0
```
```bash
#!/usr/bin/env bash
# do some work...
sleep 10
echo "call the president..."
exit 1
```
````

106
slides.md Normal file
View file

@ -0,0 +1,106 @@
---
# You can also start simply with 'default'
theme: seriph
# random image from a curated Unsplash collection by Anthony
# like them? see https://unsplash.com/collections/94734566/slidev
background: https://cover.sli.dev
# some information about your slides (markdown enabled)
title: Minimal Viable Kubernetes
info: |
## MVK
Kubernetes for minimalists.
Learn more at [mvk.headshed.dev](https://mvk.headshed.dev)
# apply unocss classes to the current slide
class: text-center
# https://sli.dev/features/drawing
drawings:
persist: false
# slide transition: https://sli.dev/guide/animations.html#slide-transitions
transition: slide-left
# enable MDC Syntax: https://sli.dev/features/mdc
mdc: true
# open graph
seoMeta:
# By default, Slidev will use ./og-image.png if it exists,
# or generate one from the first slide if not found.
ogImage: auto
# ogImage: https://cover.sli.dev
---
# Minimal Viable Kubernetes
Kubernetes for the impatient and impoverished
Jon Brookes 2025
<div @click="$slidev.nav.next" class="mt-12 py-1" hover:bg="white op-10">
Press Space for next page <carbon:arrow-right />
</div>
<div class="abs-br m-6 text-xl">
<button @click="$slidev.nav.openInEditor()" title="Open in Editor" class="slidev-icon-btn">
<carbon:edit />
</button>
<a href="https://codeberg.org/marshyon/n25.git" target="_blank" class="slidev-icon-btn">
<carbon:logo-github />
</a>
</div>
<!--
This is an introduction to Minimal Viable Kubernetes (MVK). What it is, why it is and tooling around it.
-->
---
transition: fade-out
src: ./pages/intro-slide.md
---
<!--
You can have `style` tag in markdown to override the style for the current page.
Learn more: https://sli.dev/features/slide-scope-style
-->
<style>
h1 {
background-color: #2B90B6;
background-image: linear-gradient(45deg, #4EC5D4 10%, #146b8c 20%);
background-size: 100%;
-webkit-background-clip: text;
-moz-background-clip: text;
-webkit-text-fill-color: transparent;
-moz-text-fill-color: transparent;
}
</style>
<!--
Here is another comment.
-->
---
src: ./pages/config-slide.md
---
---
transition: fade-out
src: ./pages/plugins-slide.md
---
---
transition: fade-out
src: ./pages/infctl-summary.md
---
---
layout: center
class: text-center
---
# Learn More
[Documentation](https://mvk.headshed.dev) · [GitHub](https://codeberg.org/headshed/infctl-cli)
<PoweredBySlidev mt-10 />

12
snippets/external.ts Normal file
View file

@ -0,0 +1,12 @@
/* eslint-disable no-console */
// #region snippet
// Inside ./snippets/external.ts
export function emptyArray<T>(length: number) {
return Array.from<T>({ length })
}
// #endregion snippet
export function sayHello() {
console.log('Hello from snippets/external.ts')
}

7
vercel.json Normal file
View file

@ -0,0 +1,7 @@
{
"rewrites": [
{ "source": "/(.*)", "destination": "/index.html" }
],
"buildCommand": "npm run build",
"outputDirectory": "dist"
}