Skip to content

Migrate site from Beautiful Jekyll to Docusaurus#2

Merged
SamErde merged 4 commits intomasterfrom
samerde/docusaurus-migration
Apr 28, 2026
Merged

Migrate site from Beautiful Jekyll to Docusaurus#2
SamErde merged 4 commits intomasterfrom
samerde/docusaurus-migration

Conversation

@SamErde
Copy link
Copy Markdown
Owner

@SamErde SamErde commented Apr 28, 2026

Summary

Migrates https://day3bits.com from Beautiful Jekyll to Docusaurus (classic preset) in this same repository, preserving every published post URL and all media artifacts. The default Docusaurus theme is used with no visual overrides.

The sibling project sites at /TheCleaners, /PSPreworkout, and /DLLPickle continue to work because this build keeps baseUrl: '/', does not emit conflicting subdirectories, and links to those sites with absolute URLs.

What changed

  • Scaffold: docusaurus.config.js, package.json, package-lock.json, scripts/copy-feed.js (preserves /feed.xml).
  • Content: All 12 published posts converted into blog/, with explicit slug front matter that matches the existing Jekyll permalinks. blog/authors.yml defines the single author.
  • Media: assets/img/** mirrored 1:1 into static/assets/img/** (44 files). Local image references use pathname:///assets/...; front matter image uses absolute https://day3bits.com/... URLs.
  • Static: static/CNAME (day3bits.com) and static/.nojekyll so GitHub Pages keeps the custom domain and skips Jekyll processing.
  • Features: GA4 (G-WSWT0E3F1K), RSS + Atom feeds, sitemap, tags, Mermaid (@docusaurus/theme-mermaid), PowerShell + bash Prism highlighting.
  • Comments: Giscus carried over from _config.yml via customFields.giscus + src/components/GiscusComments.js (BrowserOnly), wired in by a minimal src/theme/BlogPostItem/Footer/index.js override that only renders on blog post pages.
  • Pages: src/pages/aboutme.md (about page).
  • CI/CD: .github/workflows/ci.yml (PR + branch builds with npm audit) and .github/workflows/deploy-pages.yml (deploys only on push to master).
  • Cleanup: Removed all legacy Jekyll sources (_posts/, _drafts/, _includes/, _layouts/, _config.yml, Gemfile, Appraisals, beautiful-jekyll-theme.gemspec, staticman.yml, feed.xml, index.html, tags.html, 404.html, aboutme.md, root assets/, root CNAME).
  • Repo hygiene: Beautiful Jekyll upstream remote was removed locally (only origin remains).

Validation performed

  • npm run build succeeds with onBrokenLinks: 'throw'. Required outputs present: index.html, tags/index.html, aboutme/index.html, 404.html, feed.xml, sitemap.xml. No TheCleaners/PSPreworkout/DLLPickle directories emitted.
  • npm audit --audit-level=moderate reports 0 vulnerabilities.
  • Inventory diff: 12/12 posts and 44/44 media files migrated.
  • Front matter audit: no Jekyll-only fields (layout, comments, cover-img, thumbnail-img, share-img) remain in blog/.
  • Markdown audit: no Kramdown attributes ({:target=...}, {:.class}), no Liquid tags, no samerde.github.io absolute URLs in posts.
  • All HTML target="_blank" links carry rel="noopener noreferrer".
  • One non-blocking webpack warning from vscode-languageserver-types along the Mermaid path; does not affect output.

Notes for the reviewer

  • One Jekyll post (2026-01-26-...part-1 copy.md with a literal space and copy in the name) was migrated as ...part-1-copy.md. It looks like an accidental duplicate in the Jekyll source — please decide whether to keep it or drop both before merge.
  • Two posts have future date: values (2026-01-26, 2026-03-18). Docusaurus shows them but typically excludes them from the listing/feed depending on settings; please confirm the desired behavior.
  • The Pages deploy workflow deliberately remains scoped to master so this PR cannot deploy until merged.

Follow-ups deferred to separate work

  • Algolia DocSearch: apply for an index, then add themeConfig.algolia (appId, public apiKey, indexName).
  • Branch rename mastermain: coordinate as a repo maintenance task. After rename, update workflow triggers and editUrl (currently /edit/master/) to main.
  • Final production validation after first deploy: smoke-check /, /aboutme/, /tags/, /feed.xml, /sitemap.xml, /404.html, and the three sibling project sites.
  • Codacy analysis: the Codacy MCP tools were unavailable during this work, so per-file codacy_cli_analyze was not run on edits.

Co-authored-by: Copilot 223556219+Copilot@users.noreply.github.com

SamErde and others added 4 commits April 28, 2026 11:21
Scaffold Docusaurus, convert all 12 published posts (preserving URLs and
/assets/... media paths), enable Giscus comments via a minimal blog-footer
override, configure GA4, RSS/Atom, sitemap, tags, Mermaid, and PowerShell
syntax highlighting. Use the default Docusaurus theme without visual
overrides. Add CI and Pages deploy workflows (deploy still scoped to
master). Remove legacy Jekyll sources (_posts, _drafts, _includes,
_layouts, _config.yml, Gemfile, assets, root HTML pages, staticman.yml,
feed.xml). The static/assets mirror retains all 44 image artifacts.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Docusaurus only processes blog/, src/pages/, and static/, so the legacy
_drafts/ directory is preserved as-is for archival without affecting the
build output.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The Jekyll _posts directory contained an accidental duplicate file named
'... part-1 copy.md' (the standard Windows/macOS duplicate suffix). Drop
the migrated copy so only the canonical part-1 post is published.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@SamErde SamErde marked this pull request as ready for review April 28, 2026 16:30
Copilot AI review requested due to automatic review settings April 28, 2026 16:30
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates day3bits.com from Beautiful Jekyll to a Docusaurus (classic preset) site within the same repository, aiming to preserve existing post URLs and assets while switching the build/deploy pipeline to Node/Docusaurus.

Changes:

  • Added Docusaurus configuration and Node build tooling (including feed copy step and Giscus integration).
  • Migrated published posts into blog/ with explicit slugs and added author metadata.
  • Replaced Jekyll CI/deploy with GitHub Actions workflows for Docusaurus build and GitHub Pages deployment.

Reviewed changes

Copilot reviewed 67 out of 118 changed files in this pull request and generated no comments.

Show a summary per file
File Description
tags.html Removes legacy Jekyll tags index page.
staticman.yml Removes legacy Staticman configuration.
static/assets/img/profile-placeholder-blank.gif Adds migrated static image asset.
static/assets/img/bgimage.png Adds migrated static image asset.
static/assets/css/staticman.css Adds legacy Staticman CSS (now under static/).
static/assets/css/pygment_highlights.css Adds legacy code highlighting CSS asset.
static/assets/css/bootstrap-social.css Adds legacy social button CSS asset.
static/assets/css/beautifuljekyll.css Adds legacy Beautiful Jekyll CSS (contains Liquid/front matter).
static/assets/css/beautifuljekyll-minimal.css Adds legacy minimal layout CSS.
static/CNAME Adds GitHub Pages custom domain configuration for Docusaurus output.
static/.nojekyll Adds .nojekyll to disable Jekyll processing on GitHub Pages.
src/theme/BlogPostItem/Footer/index.js Theme override to inject Giscus comments on blog post pages.
src/pages/aboutme.md Migrates About page content into Docusaurus pages.
src/components/GiscusComments.js Adds client-side Giscus embed component.
scripts/copy-feed.js Copies Docusaurus rss.xml to feed.xml to preserve feed URL.
package.json Adds Node dependencies and build scripts for Docusaurus.
package-lock.json Locks Node dependency versions for reproducible installs.
index.html Removes legacy Jekyll home page file.
feed.xml Removes legacy Jekyll feed template (now generated by Docusaurus + copy step).
docusaurus.config.js Adds Docusaurus site config (blog at /, feeds, sitemap, GA4, navbar/footer, mermaid, prism langs).
blog/authors.yml Defines the blog author metadata for Docusaurus.
blog/2026-03-18-new-microsoft-graph-soverign-cloud-partner-environments.md Migrated post content with preserved slug.
blog/2025-10-16-windows-update-kb5066835-authentication-problems.md Migrated post content with preserved slug and updated image paths/code fences.
blog/2025-07-09-installing-powershell-with-the-dotnet-tool.md Migrated post content and converted callouts to Docusaurus admonitions.
blog/2025-06-20-using-mar-as-a-secure-repository.md Migrated post content and converted callouts/images for Docusaurus.
blog/2025-02-17-using-obsolete-parameters-in-powershell.md Migrated post content and added social/cover metadata fields.
blog/2024-12-30-creating-an-it-systems-management-user-group-for-charlotte.md Migrated post content and converted callouts/images for Docusaurus.
blog/2024-12-09-Revisiting-Join-Path-in-PowerShell.md Migrated post content and updated image URLs.
blog/2024-11-20-how-to-get-active-directory-trust-details-in-powershell.md Migrated post content with preserved slug.
blog/2024-09-05-benefits-of-removing-the-az-and-microsoft-graph-powershell-modules.md Migrated post content and converted callouts to Docusaurus admonitions.
blog/2024-03-21-services-included-in-microsoft-365-e5-developer-plan.md Migrated post content and added social/cover metadata fields.
blog/2023-12-08-return-multiple-objects-from-a-powershell-function.md Migrated post content; replaced Kramdown attrs with HTML; converted callouts.
beautiful-jekyll-theme.gemspec Removes legacy Ruby gemspec for Beautiful Jekyll theme.
assets/js/staticman.js Removes legacy Staticman submission JS.
assets/js/beautifuljekyll.js Removes legacy Beautiful Jekyll theme JS.
_posts/2026-01-26-setting-up-your-powershell-development-environment-part-1 copy.md Removes legacy Jekyll post source file.
_layouts/post.html Removes legacy Jekyll layout.
_layouts/page.html Removes legacy Jekyll layout.
_layouts/minimal.html Removes legacy Jekyll layout.
_layouts/home.html Removes legacy Jekyll layout.
_layouts/default.html Removes legacy Jekyll layout.
_layouts/base.html Removes legacy Jekyll base layout.
_includes/utterances-comment.html Removes legacy comments include.
_includes/staticman-comments.html Removes legacy comments include.
_includes/staticman-comment.html Removes legacy comments include.
_includes/social-share.html Removes legacy social share include.
_includes/social-networks-links.html Removes legacy footer links include.
_includes/search.html Removes legacy search include.
_includes/readtime.html Removes legacy read-time include.
_includes/nav.html Removes legacy navbar include.
_includes/matomo.html Removes legacy analytics include.
_includes/header.html Removes legacy header include.
_includes/head.html Removes legacy head include.
_includes/gtm_head.html Removes legacy GTM include.
_includes/gtm_body.html Removes legacy GTM include.
_includes/gtag.html Removes legacy GA include.
_includes/google_analytics.html Removes legacy Universal Analytics include.
_includes/giscus-comment.html Removes legacy Jekyll giscus include (replaced by React component).
_includes/footer.html Removes legacy footer include.
_includes/footer-scripts.html Removes legacy footer scripts include.
_includes/footer-minimal.html Removes legacy minimal footer include.
_includes/fb-comment.html Removes legacy FB comments include.
_includes/ext-js.html Removes legacy external JS include helper.
_includes/ext-css.html Removes legacy external CSS include helper.
_includes/disqus.html Removes legacy Disqus include.
_includes/comments.html Removes legacy comments dispatcher include.
_includes/commentbox.html Removes legacy CommentBox include.
_includes/cloudflare_analytics.html Removes legacy Cloudflare analytics include.
_config.yml Removes legacy Jekyll site configuration.
Gemfile Removes legacy Ruby dependencies.
CNAME Moves CNAME from repo root into static/ for Docusaurus output.
Appraisals Removes legacy Ruby appraisal config.
404.html Removes legacy Jekyll 404 page (Docusaurus will generate its own).
.gitignore Adds Node/Docusaurus build artifacts to ignore list.
.github/workflows/deploy-pages.yml Adds Pages deployment workflow for Docusaurus build output.
.github/workflows/ci.yml Updates CI workflow from Jekyll to Docusaurus build + npm audit + artifact upload.
Comments suppressed due to low confidence (3)

blog/2024-09-05-benefits-of-removing-the-az-and-microsoft-graph-powershell-modules.md:74

  • The PowerShell example has a typo in the module name: Az.Tools,Predictor (comma) won’t resolve as a module. It should match the earlier bullet (Az.Tools.Predictor) so copy/paste works for readers.
    blog/2026-03-18-new-microsoft-graph-soverign-cloud-partner-environments.md:6
  • This post’s date is set in the future (2026-03-18). Depending on Docusaurus blog settings, future-dated posts can be omitted from listings/feeds or behave unexpectedly. If this is intentional, consider confirming the desired visibility behavior; otherwise adjust the date to the intended publish date.
    src/pages/aboutme.md:7
  • Docusaurus pages already render an H1 from the front matter title by default. Adding # About me in the content will typically produce a duplicate top-level heading. Consider removing the in-body H1 or adding hide_title: true in the front matter if you want to keep the explicit heading.

@SamErde SamErde merged commit 88175df into master Apr 28, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants