From cedef0ed090d0a112e9892a58ae1d7ab411362b2 Mon Sep 17 00:00:00 2001 From: William Mantly Date: Thu, 16 Jul 2026 19:52:26 -0400 Subject: [PATCH] Redesign docs site: match the app's own look, add SEO, mobile-ready The GitHub Pages site used the generic jekyll-theme-cayman theme -- purple gradient hero, no site nav, no per-page SEO. Replaced with a custom layout that mirrors the actual app UI: dark fixed navbar with the theta42 logo, Bootstrap 5 + Font Awesome (same stack the app uses), content in a card, dark footer matching bottom.ejs (copyright, MIT license, GitHub, Changelog links). - New cross-page nav (Home/Deployment/Configuration/OAuth/LDAP/ Changelog) -- there was previously no way to get from one docs page to another except a single "Back to Home" link per page. - SEO: jekyll-seo-tag + jekyll-sitemap (both GitHub-Pages-supported plugins, no custom build needed) -- real per-page meta description, Open Graph/Twitter card tags, canonical URLs, JSON-LD, sitemap.xml, and a robots.txt referencing it. Added a real description to every page's front matter (none existed before). - Mobile: Bootstrap's responsive grid + collapsible navbar; the screenshot pairs in index.md (inline width="49%" for a two-up desktop layout) now stack to full-width below 576px instead of squeezing illegibly small. Verified with a real Jekyll build (jekyll/jekyll Docker image, no Ruby available locally) + Playwright: desktop and mobile (375px) screenshots of the home and deployment pages, mobile nav toggle open/close, active-link highlighting per page, zero console/page errors, and confirmed real SEO output (meta description, OG/Twitter tags, canonical, JSON-LD, sitemap.xml, robots.txt) via curl against the served site. --- docs/_config.yml | 43 +++++++++++-- docs/_layouts/default.html | 82 +++++++++++++++++++++++++ docs/assets/css/style.css | 116 ++++++++++++++++++++++++++++++++++++ docs/assets/img/theta42.svg | 51 ++++++++++++++++ docs/configuration.md | 1 + docs/deployment.md | 1 + docs/index.md | 1 + docs/ldap.md | 1 + docs/oauth.md | 1 + docs/robots.txt | 4 ++ 10 files changed, 297 insertions(+), 4 deletions(-) create mode 100644 docs/_layouts/default.html create mode 100644 docs/assets/css/style.css create mode 100644 docs/assets/img/theta42.svg create mode 100644 docs/robots.txt diff --git a/docs/_config.yml b/docs/_config.yml index b08b1e9..7682241 100644 --- a/docs/_config.yml +++ b/docs/_config.yml @@ -1,9 +1,44 @@ title: SSO Manager -description: A self-hosted OpenID Connect provider with an OpenLDAP directory and a web management UI -theme: jekyll-theme-cayman -show_downloads: false +description: A self-hosted OpenID Connect provider with a bundled OpenLDAP directory and a web management UI, for home labs and small businesses that want their own identity provider. +url: "https://theta42.github.io" +baseurl: "/sso-manager-node" +logo: /assets/img/theta42.svg +lang: en_US + +plugins: + - jekyll-seo-tag + - jekyll-sitemap + github: repository_url: https://github.com/theta42/sso-manager-node zip_url: https://github.com/theta42/sso-manager-node/archive/refs/heads/master.zip tar_url: https://github.com/theta42/sso-manager-node/archive/refs/heads/master.tar.gz - repository_name: theta42/sso-manager-node \ No newline at end of file + repository_name: theta42/sso-manager-node + +nav: + - title: Home + page: / + icon: fa-house + - title: Deployment + page: /deployment.html + icon: fa-server + - title: Configuration + page: /configuration.html + icon: fa-gears + - title: OAuth + page: /oauth.html + icon: fa-key + - title: LDAP + page: /ldap.html + icon: fa-address-book + - title: Changelog + url: https://github.com/theta42/sso-manager-node/blob/master/CHANGELOG.md + icon: fa-list + +defaults: + - scope: + path: "" + type: "pages" + values: + layout: default + image: /assets/img/theta42.svg diff --git a/docs/_layouts/default.html b/docs/_layouts/default.html new file mode 100644 index 0000000..39af120 --- /dev/null +++ b/docs/_layouts/default.html @@ -0,0 +1,82 @@ + + + + + + + + {% seo title=false %} + {% if page.title %}{{ page.title }} · {% endif %}{{ site.title }} + + + + + + + + + +
+
+
+
+
+
+ {{ content }} +
+
+
+
+
+
+ + + + + + diff --git a/docs/assets/css/style.css b/docs/assets/css/style.css new file mode 100644 index 0000000..e24a5de --- /dev/null +++ b/docs/assets/css/style.css @@ -0,0 +1,116 @@ +/* theta42 docs site — shares the in-app dark navbar/footer + card look + (Bootstrap 5 + Font Awesome, same as the running apps) rather than a + generic Jekyll theme. */ + +body { + background-color: #f4f5f6; +} + +.navbar-brand img { + filter: drop-shadow(0 0 2px rgba(0, 0, 0, .4)); +} + +.navbar-nav .nav-link.active { + color: #fff; + font-weight: 600; +} + +/* Markdown content typography, scoped to the card body so it doesn't leak + into the nav/footer. */ +.site-content h1:first-child { + margin-top: 0; +} + +.site-content h1, +.site-content h2, +.site-content h3 { + font-weight: 700; +} + +.site-content h2 { + margin-top: 2.5rem; + padding-bottom: .4rem; + border-bottom: 1px solid #e9ecef; +} + +.site-content h3 { + margin-top: 1.75rem; +} + +.site-content a { + color: #a3671f; + text-decoration-color: rgba(163, 103, 31, .35); +} + +.site-content a:hover { + color: #8a5a16; +} + +.site-content pre { + background-color: #212529; + color: #f8f9fa; + padding: 1rem 1.25rem; + border-radius: .375rem; + overflow-x: auto; +} + +.site-content code { + color: #a3671f; + background-color: #f4f0e8; + padding: .15em .4em; + border-radius: .25rem; + font-size: .875em; +} + +.site-content pre code { + color: inherit; + background: none; + padding: 0; +} + +.site-content table { + display: block; + overflow-x: auto; + width: 100%; + border-collapse: collapse; + margin: 1.25rem 0; +} + +.site-content table th, +.site-content table td { + border: 1px solid #dee2e6; + padding: .5rem .75rem; + text-align: left; +} + +.site-content table th { + background-color: #f8f9fa; +} + +.site-content blockquote { + border-left: 4px solid #C59341; + padding: .5rem 1rem; + margin: 1.25rem 0; + background-color: #f8f6f1; + color: #495057; +} + +.site-content img { + max-width: 100%; + height: auto; +} + +/* Screenshot grids in the markdown use width="49%" inline attrs for a + two-up desktop layout -- stack them on narrow screens instead of + squeezing to illegibility. */ +@media (max-width: 576px) { + .site-content img[width] { + width: 100% !important; + margin-bottom: .75rem; + } +} + +.site-content hr { + margin: 2rem 0; + border-top: 1px solid #e9ecef; +} diff --git a/docs/assets/img/theta42.svg b/docs/assets/img/theta42.svg new file mode 100644 index 0000000..e598305 --- /dev/null +++ b/docs/assets/img/theta42.svg @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 42 + + diff --git a/docs/configuration.md b/docs/configuration.md index 15a6765..bcb9b4d 100644 --- a/docs/configuration.md +++ b/docs/configuration.md @@ -1,6 +1,7 @@ --- layout: default title: Configuration +description: SSO Manager's config layers — conf/base.js defaults, secrets.js overrides, and app_* environment variables. --- # Configuration diff --git a/docs/deployment.md b/docs/deployment.md index bbfe469..f4cb789 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -1,6 +1,7 @@ --- layout: default title: Deployment +description: Deploying SSO Manager — the all-in-one Docker image, bare-metal install, config layers, and backups. --- # Deployment Guide diff --git a/docs/index.md b/docs/index.md index f4597a8..79989c8 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,7 @@ --- layout: default title: Home +description: A self-hosted OpenID Connect provider with a bundled OpenLDAP directory and a web management UI. One login for your modern apps, one LDAP directory for the rest, no phone-home. --- # SSO Manager diff --git a/docs/ldap.md b/docs/ldap.md index 9ff199b..64bf6a1 100644 --- a/docs/ldap.md +++ b/docs/ldap.md @@ -1,6 +1,7 @@ --- layout: default title: LDAP +description: SSO Manager's bundled OpenLDAP directory — schema, service accounts, TLS, and connecting third-party apps directly. --- # LDAP Directory diff --git a/docs/oauth.md b/docs/oauth.md index 88e6944..02b8cb1 100644 --- a/docs/oauth.md +++ b/docs/oauth.md @@ -1,6 +1,7 @@ --- layout: default title: OAuth / OIDC +description: SSO Manager's OpenID Connect / OAuth 2.0 provider — discovery document, client registration, and token endpoints. --- # OAuth 2.0 / OpenID Connect diff --git a/docs/robots.txt b/docs/robots.txt new file mode 100644 index 0000000..9bfccd1 --- /dev/null +++ b/docs/robots.txt @@ -0,0 +1,4 @@ +User-agent: * +Allow: / + +Sitemap: https://theta42.github.io/sso-manager-node/sitemap.xml