Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 18
node-version: 22
cache: npm

- name: Install dependencies
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/test-deploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 18
node-version: 22
cache: npm

- name: Install dependencies
Expand Down
35 changes: 33 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,34 @@
# Website
# kurtkluth.dev

This website [kurtkluth.dev](https://kurtkluth.dev) is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.
Portfolio and documentation hub for software, games, and experiments built by
Kurt Kluth and Kluth Studios — live at [kurtkluth.dev](https://kurtkluth.dev).

Built with [Docusaurus](https://docusaurus.io/) 3 (TypeScript, React 19,
Docusaurus 4 `future.v4` compatibility flags enabled).

## Development

```bash
npm install
npm run start # dev server at http://localhost:3000
npm run typecheck # TypeScript check
npm run build # production build; broken links fail the build
npm run serve # serve the production build locally
```

## Adding a project

Adding a project is a content task, not a redesign:

1. Add an entry to `src/data/projects.ts` (the single source of truth for
cards, detail pages, filters, and footer links).
2. Drop 16:9 artwork at `static/img/projects/<slug>.svg`.
3. Create `docs/<slug>/` and register its category in `sidebars.ts`.

See the [Developer Guide](https://kurtkluth.dev/docs/guides/developer-guide)
for details.

## Deployment

Pushes to `main` build and deploy to GitHub Pages via
`.github/workflows/deploy.yml`. The `CNAME` file pins the custom domain.
3 changes: 0 additions & 3 deletions babel.config.js

This file was deleted.

12 changes: 0 additions & 12 deletions blog/2019-05-28-first-blog-post.md

This file was deleted.

44 changes: 0 additions & 44 deletions blog/2019-05-29-long-blog-post.md

This file was deleted.

20 changes: 0 additions & 20 deletions blog/2021-08-01-mdx-blog-post.mdx

This file was deleted.

Binary file not shown.
25 changes: 0 additions & 25 deletions blog/2021-08-26-welcome/index.md

This file was deleted.

30 changes: 0 additions & 30 deletions blog/authors.yml

This file was deleted.

16 changes: 0 additions & 16 deletions blog/tags.yml

This file was deleted.

47 changes: 47 additions & 0 deletions docs/getting-started.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
sidebar_position: 2
title: Getting Started
description: How this site is organized and where to go first.
---

# Getting Started

kurtkluth.dev is three things in one place:

1. **A portfolio** — the [Projects](/projects) section shows everything that's
live, with links to open each project directly.
2. **Documentation** — this section explains each project in depth: purpose,
features, architecture, and history.
3. **Instructions** — the [Guides](/docs/guides) section collects practical
how-tos that cut across projects.

## Pick your path

### I want to use SQLCLR

SQLCLR is the developer-tool side of the site: running .NET code inside
SQL Server. Start with the [SQLCLR overview](/docs/sqlclr/overview), then
follow the [Quick Start](/docs/sqlclr/quick-start).

### I want to play the games

All Kluth Studios games run directly in the browser — nothing to install:

- [Lisa Climber](https://lisaclimber.kluthstudios.com) — climb as high as you can
- [Lisetris](https://lisetris.kluthstudios.com) — clear lines, chase the score
- [Skyroute](https://skyroute.kluthstudios.com) — take to the sky
- [Spindrift](https://spindrift.kluthstudios.com) — drift into the atmosphere

Each has a **How to Play** page in its documentation section.

### Something is broken

Every project has its own troubleshooting page, and there's a
[general troubleshooting guide](/docs/guides/troubleshooting) for issues that
affect the whole family of sites.

## Requirements

Everything here targets **current versions of modern browsers** (Chrome, Edge,
Firefox, Safari) on desktop and mobile. SQLCLR work additionally assumes access
to a SQL Server instance — see [SQLCLR Installation](/docs/sqlclr/installation).
62 changes: 62 additions & 0 deletions docs/guides/developer-guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
---
sidebar_position: 4
title: Developer Guide
description: How kurtkluth.dev is built, and how to add a new project to it.
---

# Developer Guide

This site is a [Docusaurus](https://docusaurus.io) 3 project written in
TypeScript, with custom React components for the portfolio layer and standard
Docusaurus docs underneath. It builds with the Docusaurus 4 `future.v4`
compatibility flags enabled.

## Architecture

```mermaid
flowchart TD
M[src/data/projects.ts<br/>project metadata registry] --> H[Homepage cards & updates]
M --> P["/projects index + filters"]
M --> D["/projects/&lt;slug&gt; detail pages<br/>(generated by config plugin)"]
M --> F[Footer links]
Docs[docs/*] --> S[Docs & Guides sidebars]
```

Everything portfolio-shaped renders from **one metadata registry**:
`src/data/projects.ts`. A small plugin in `docusaurus.config.ts` generates a
detail route for each entry, so project pages exist without any per-project
page files.

## Adding a project

Adding a project is a content task:

1. **Register it** — add an entry to `src/data/projects.ts` (name, slug,
summary, category, status, URLs, technologies, accent color, features,
getting-started steps, updates).
2. **Add artwork** — drop a 16:9 image at
`static/img/projects/<slug>.svg` (or `.png`) and reference it in the
entry's `screenshots`.
3. **Write docs** — create `docs/<slug>/` with at least `overview.md`,
and add the category to `sidebars.ts`.

The homepage grid, projects index, detail page, and footer pick it up
automatically.

## Local development

```bash
npm install
npm run start # dev server at localhost:3000
npm run typecheck # TypeScript
npm run build # production build (broken links fail the build)
```

## Conventions

- **Design tokens** live in `src/css/custom.css` as `--kk-*` custom
properties; components consume tokens, never raw hex values.
- **CSS Modules** per component; no global component styles.
- **Dark is the signature theme**; both themes must remain readable.
- The production build treats broken links and anchors as errors — run
`npm run build` before pushing.
36 changes: 36 additions & 0 deletions docs/guides/how-to-play.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
---
sidebar_position: 2
title: How to Play
description: How the Kluth Studios games work and how to jump in.
---

# How to Play

Every Kluth Studios title follows the same philosophy: **open the URL and
you're playing.** No installs, no launchers, no accounts.

## The collection

| Game | One-liner | Play |
|---|---|---|
| Lisa Climber | Climb as high as you can without falling | [lisaclimber.kluthstudios.com](https://lisaclimber.kluthstudios.com) |
| Lisetris | Clear lines in a falling-block classic | [lisetris.kluthstudios.com](https://lisetris.kluthstudios.com) |
| Skyroute | Plot a route and take to the sky | [skyroute.kluthstudios.com](https://skyroute.kluthstudios.com) |
| Spindrift | Drift through an atmospheric experience | [spindrift.kluthstudios.com](https://spindrift.kluthstudios.com) |

## Universal rules

1. **Desktop:** click the game once so it has keyboard focus, then follow the
on-screen key prompts.
2. **Mobile:** the games present touch controls; portrait vs. landscape hints
appear in-game where it matters.
3. **Saving:** any progress or high scores live in your browser's local
storage — per browser, per device.

## Per-game detail

Each game's own **How to Play** page covers objectives and tips:
[Lisa Climber](/docs/lisa-climber/how-to-play) ·
[Lisetris](/docs/lisetris/how-to-play) ·
[Skyroute](/docs/skyroute/how-to-play) ·
[Spindrift](/docs/spindrift/how-to-play)
20 changes: 20 additions & 0 deletions docs/guides/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
sidebar_position: 1
title: Guides
slug: /guides
description: Practical cross-project guides — playing, setup, development, and troubleshooting.
---

# Guides

Where the per-project documentation explains each project in depth, these
guides collect the **practical instructions that cut across projects**.

- **[How to Play](/docs/guides/how-to-play)** — what the Kluth Studios games
have in common, and how to jump into any of them.
- **[Installation & Setup](/docs/guides/installation-and-setup)** — what (if
anything) you need before using each project.
- **[Developer Guide](/docs/guides/developer-guide)** — how this site is
built and how to add a project to it.
- **[Troubleshooting](/docs/guides/troubleshooting)** — the cross-project
checklist when something won't load or behaves badly.
Loading
Loading