Skip to content

Commit 9b0eda2

Browse files
committed
Add homepage, robots.txt, and update build config
Adds a new index.html homepage and robots.txt for search engine indexing. Updates _config.yml to include jekyll-sitemap and jekyll-last-modified-at plugins. Updates GitHub Pages workflow to use latest actions and required settings for Jekyll plugins.
1 parent 6548550 commit 9b0eda2

File tree

4 files changed

+232
-2
lines changed

4 files changed

+232
-2
lines changed

.github/workflows/pages.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,24 +30,30 @@ jobs:
3030
runs-on: ubuntu-latest
3131
steps:
3232
- name: Checkout
33-
uses: actions/checkout@v4
33+
uses: actions/checkout@v6.0.1
34+
with:
35+
fetch-depth: 0 # IMPORTANT: needed for jekyll-last-modified-at (git history)
36+
3437
- name: Setup Ruby
3538
uses: ruby/setup-ruby@v1
3639
with:
3740
ruby-version: '3.3' # Not needed with a .ruby-version file
3841
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
3942
cache-version: 0 # Increment this number if you need to re-download cached gems
43+
4044
- name: Setup Pages
4145
id: pages
4246
uses: actions/configure-pages@v5
47+
4348
- name: Build with Jekyll
4449
# Outputs to the './_site' directory by default
4550
run: bundle exec jekyll build --baseurl "${{ steps.pages.outputs.base_path }}"
4651
env:
4752
JEKYLL_ENV: production
53+
4854
- name: Upload artifact
4955
# Automatically uploads an artifact from the './_site' directory by default
50-
uses: actions/upload-pages-artifact@v3
56+
uses: actions/upload-pages-artifact@v4
5157

5258
# Deployment job
5359
deploy:

_config.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ theme: just-the-docs
55
plugins:
66
- jekyll-default-layout
77
- jekyll-seo-tag
8+
- jekyll-sitemap
9+
- jekyll-last-modified-at
810

911
url: https://kestrun.github.io
1012

index.html

Lines changed: 218 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,218 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="UTF-8" />
6+
<meta name="viewport" content="width=device-width, initial-scale=1" />
7+
<title>Kestrun – Hybrid PowerShell & .NET Web Framework</title>
8+
9+
<!-- 🔹 Primary Meta Tags -->
10+
<meta name="title" content="Kestrun – Hybrid PowerShell & .NET Web Framework">
11+
<meta name="description"
12+
content="Kestrun is a modern hybrid web framework powered by ASP.NET Core, PowerShell, and C#. Build secure, extensible, multi-language web apps with ease.">
13+
<meta name="keywords"
14+
content="Kestrun, PowerShell web framework, .NET web framework, ASP.NET Core, Kestrel, hybrid framework, Razor Pages, C# scripting, multi-language routes, open source web server">
15+
<meta name="author" content="Kestrun Project">
16+
<meta name="robots" content="index, follow">
17+
<meta name="language" content="English">
18+
19+
<!-- Open Graph -->
20+
<meta property="og:type" content="website">
21+
<meta property="og:url" content="https://www.kestrun.dev/">
22+
<meta property="og:site_name" content="Kestrun">
23+
<meta property="og:title" content="Kestrun – Hybrid PowerShell & .NET Web Framework">
24+
<meta property="og:description"
25+
content="A modern hybrid web framework for PowerShell & .NET. Build extensible, secure, and cross-platform apps with ease.">
26+
<meta property="og:image" content="https://www.kestrun.dev/assets/kestrun_abstract_transparent.png">
27+
28+
<!-- Twitter -->
29+
<meta name="twitter:card" content="summary_large_image">
30+
<meta name="twitter:url" content="https://www.kestrun.dev/">
31+
<meta name="twitter:title" content="Kestrun – Hybrid PowerShell & .NET Web Framework">
32+
<meta name="twitter:description" content="A modern hybrid web framework for PowerShell & .NET.">
33+
<meta name="twitter:image" content="https://www.kestrun.dev/assets/kestrun_abstract_transparent.png">
34+
35+
<!-- Favicon -->
36+
<link rel="icon" href="/assets/favicon.ico" type="image/x-icon" />
37+
38+
<!-- Theme color (nice on Android/iOS) -->
39+
<meta name="theme-color" content="#1f6feb">
40+
41+
<!-- Preload the wordmark for faster LCP -->
42+
<link rel="preload" as="image" href="/assets/kestrun-wordmark-light.svg"
43+
imagesrcset="/assets/kestrun-wordmark-light.svg">
44+
45+
<style>
46+
body {
47+
margin: 0;
48+
font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
49+
background: white;
50+
color: #5c5962;
51+
line-height: 1.6;
52+
}
53+
54+
header {
55+
text-align: center;
56+
background: linear-gradient(135deg, #1f6feb, #238636);
57+
color: white;
58+
position: relative;
59+
padding: 3rem 1rem;
60+
/* add comfortable space */
61+
}
62+
63+
header img.logo {
64+
position: absolute;
65+
top: 1rem;
66+
/* <-- add this */
67+
right: 1rem;
68+
max-width: 80px;
69+
height: auto;
70+
pointer-events: none;
71+
/* purely decorative */
72+
}
73+
74+
header img.wordmark {
75+
max-width: 640px;
76+
height: auto;
77+
margin-bottom: 1rem;
78+
display: block;
79+
margin-left: auto;
80+
margin-right: auto;
81+
}
82+
83+
header p {
84+
font-size: 1.25rem;
85+
opacity: 0.9;
86+
}
87+
88+
main {
89+
max-width: 800px;
90+
margin: 2rem auto;
91+
padding: 0 1rem;
92+
}
93+
94+
95+
96+
/* Buttons */
97+
a.button {
98+
display: inline-flex;
99+
align-items: center;
100+
gap: .45em;
101+
box-sizing: border-box;
102+
padding: 0.45em 1.0em;
103+
margin: .25em .35em 0 0;
104+
font: 500 1rem/1.4 system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
105+
color: #1f6feb;
106+
text-decoration: none;
107+
background: #f7f7f9;
108+
border-radius: 8px;
109+
border: 1px solid rgba(0, 0, 0, .06);
110+
box-shadow: 0 1px 2px rgba(0, 0, 0, .06), 0 3px 8px rgba(0, 0, 0, .04);
111+
}
112+
113+
/* ✅ Correct selector (.svg-icon is a CLASS) */
114+
.button .svg-icon {
115+
display: inline-block;
116+
width: 1.1em;
117+
height: 1.1em;
118+
flex: 0 0 auto;
119+
background: currentColor;
120+
/* paint */
121+
-webkit-mask-image: var(--icon);
122+
/* use the vector as a mask */
123+
mask-image: var(--icon);
124+
-webkit-mask-repeat: no-repeat;
125+
mask-repeat: no-repeat;
126+
-webkit-mask-position: center;
127+
mask-position: center;
128+
-webkit-mask-size: contain;
129+
mask-size: contain;
130+
}
131+
132+
/* --- Icons as URL-encoded SVGs (no inline <svg> clutter) --- */
133+
134+
/* Book / Docs */
135+
.icon-docs {
136+
--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M6 3a3 3 0 0 0-3 3v12a3 3 0 0 0 3 3h12.5a1.5 1.5 0 0 0 0-3H7a1.5 1.5 0 1 1 0-3h11.5A1.5 1.5 0 0 0 20 13V6a3 3 0 0 0-3-3H6z'/%3E%3C/svg%3E");
137+
}
138+
139+
/* GitHub Octocat (Simple Icons path) */
140+
.icon-github {
141+
--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.387.6.113.82-.262.82-.582 0-.288-.012-1.242-.018-2.25-3.338.726-4.042-1.61-4.042-1.61-.546-1.388-1.333-1.757-1.333-1.757-1.09-.744.082-.73.082-.73 1.205.087 1.84 1.237 1.84 1.237 1.07 1.833 2.807 1.303 3.492.997.107-.775.42-1.303.763-1.603-2.665-.303-5.466-1.332-5.466-5.931 0-1.312.469-2.383 1.237-3.223-.124-.303-.537-1.523.117-3.176 0 0 1.008-.322 3.3 1.23a11.52 11.52 0 0 1 3-.404c1.02.005 2.046.138 3 .404 2.29-1.552 3.297-1.23 3.297-1.23.656 1.653.243 2.873.12 3.176.771.84 1.236 1.911 1.236 3.223 0 4.61-2.806 5.624-5.476 5.921.431.372.824 1.102.824 2.222 0 1.606-.015 2.899-.015 3.293 0 .322.216.7.825.58C20.565 21.797 24 17.298 24 12c0-6.627-5.373-12-12-12z'/%3E%3C/svg%3E");
142+
}
143+
144+
/* Blog (pencil) */
145+
.icon-blog {
146+
--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04a1 1 0 0 0 0-1.41l-2.34-2.34a1 1 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z'/%3E%3C/svg%3E");
147+
}
148+
149+
/* Coverage (check) */
150+
.icon-coverage {
151+
--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='black' d='M9 16.17 4.83 12 3.41 13.41 9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E");
152+
}
153+
154+
155+
footer {
156+
margin-top: 4rem;
157+
padding: 1rem;
158+
text-align: center;
159+
font-size: 0.875rem;
160+
color: #8b949e;
161+
border-top: 1px solid #30363d;
162+
}
163+
164+
footer a {
165+
color: inherit;
166+
}
167+
</style>
168+
</head>
169+
170+
<body>
171+
<header>
172+
<!-- Logo (top-right) -->
173+
<img src="/assets/kestrun_abstract_transparent.png" alt="Kestrun logo" class="logo" />
174+
175+
<!-- Wordmark (centered) -->
176+
<img src="/assets/kestrun-wordmark-light.svg" alt="Kestrun" class="wordmark" />
177+
178+
179+
<p>PowerShell brains. Kestrel speed</p>
180+
</header>
181+
<main>
182+
<h2>What is Kestrun?</h2>
183+
<p>
184+
Kestrun is a hybrid web framework built on <strong>ASP.NET Core (Kestrel)</strong>,
185+
extending it with <strong>PowerShell</strong>, <strong>C#</strong>, and multi-language scripting support.
186+
It brings the flexibility of scripting and the performance of .NET into one ecosystem.
187+
</p>
188+
189+
<h2>Features</h2>
190+
<ul>
191+
<li>⚡ Multi-language routes (PowerShell, C#, F#, VB.NET, JS, Python, …)</li>
192+
<li>🔒 Built-in authentication & certificate management</li>
193+
<li>📄 Razor pages backed by PowerShell scripts</li>
194+
<li>📊 Logging, scheduling, caching, compression</li>
195+
<li>🛠 Designed for extensibility & cross-platform use</li>
196+
</ul>
197+
198+
<div class="buttons">
199+
<a href="https://docs.kestrun.dev" class="button">
200+
<span class="svg-icon icon-docs"></span> Read the Docs
201+
</a>
202+
<a href="https://github.com/Kestrun/Kestrun" class="button"> <span class="svg-icon icon-github"></span>
203+
GitHub Repo
204+
</a>
205+
<a href="https://blog.kestrun.dev" class="button">
206+
<span class="svg-icon icon-blog"></span> Blog
207+
</a>
208+
<a href="https://coverage.kestrun.dev" class="button">
209+
<span class="svg-icon icon-coverage"></span> Test Coverage
210+
</a>
211+
</div>
212+
</main>
213+
<footer>
214+
© 2025-2026 Kestrun Project · MIT Licensed · <a href="https://github.com/Kestrun/Kestrun">GitHub</a>
215+
</footer>
216+
</body>
217+
218+
</html>

robots.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
User-agent: *
2+
Allow: /
3+
4+
Sitemap: https://docs.kestrun.dev/sitemap.xml

0 commit comments

Comments
 (0)