Repository navigation
Commit a506a45
Self-host blog with 178 posts migrated from Hashnode
Replaces the Hashnode-hosted blog with a fully self-hosted Next.js static
export. Hashnode shut down free API access; this migration keeps content
under our control and preserves every existing backlink.
Content
- 178 posts imported from saiyam1814/hashnode-backup with frontmatter
normalized (title, slug, date, tags, author, cover)
- 1469 post images downloaded into public/img/blog/<slug>/ (no CDN deps)
- 61 unique authors resolved from Hashnode dashboard paste, with 60
avatars and 37 bios scraped from Wayback Machine archives
- content/authors.json as the multi-author registry
Routes
- /blog (Latest 3, Series, Topic hubs, Browse by tag, paginated archive)
- /blog/<slug> (post with TOC, share rail, reading progress, comments)
- /blog/page/[2..12] (Docker-blog-style 3-col grid, 15 posts per page)
- /blog/tag/[tag], /blog/author/[handle], /blog/authors
- /blog/hub/[slug] (6 curated topic hubs: kubernetes, docker, ai-ml,
devops, security, linux)
- /blog/series, /blog/series/[slug] (7 Days of Docker shipped,
7 Days of DGX Spark placeholder)
- /blog/write (PR-based contributor guide)
Backlink preservation
- vercel.json: 179 explicit 301s mapping kubesimplify.com/<old-slug> to
/blog/<slug>, plus host-based rewrites for blog.kubesimplify.com
- public/_redirects: 381-line Cloudflare Pages config that serves clean
/<slug> URLs on the blog subdomain and 301s any /blog/<slug> hits back
to the canonical short form
- /blogs (legacy index) 301s to /blog
- not-found.js retains its client-side fallback for typo'd slugs
SEO / AEO / GEO
- BlogPosting + Person + Organization + BreadcrumbList JSON-LD on every
post, with sameAs, image, isPartOf (for series), about
- CollectionPage + ItemList schema on tag/hub/author/series pages
- ProfilePage schema on individual author pages
- Self-referencing canonicals pointing to blog.kubesimplify.com
- Open Graph + Twitter Card on every page
- Dynamic sitemap.xml covering posts, tags, hubs, authors, pagination,
series (~280 URLs)
- robots.txt with explicit allowlist for GPTBot, ClaudeBot, anthropic-ai,
PerplexityBot, OAI-SearchBot, Google-Extended, Applebot-Extended, CCBot,
meta-externalagent, cohere-ai
- llms.txt with full site map, hubs, top contributors, recent posts
- RSS + Atom feeds at /rss.xml and /atom.xml
Reading experience
- ReactMarkdown via unified pipeline (remark-gfm + rehype-pretty-code)
- Shiki github-dark code highlighting in both light and dark site themes
- Sticky desktop TOC, collapsible mobile TOC
- Share bar (X, LinkedIn, Hacker News, copy)
- Reading progress bar
- Related posts via tag overlap
- Author bio card with socials + Edit on GitHub link
- Pagefind static search (20,500+ words indexed, no service required)
- Substack newsletter CTA (saiyampathak.substack.com/s/kubesimplify-diaries)
- Giscus comments wired (GitHub Discussions backend, repo IDs configured)
Build pipeline
- npm run build runs generate-feeds + generate-redirects, then next build,
then pagefind --site out
- All deploys idempotent; scripts/ directory contains the migration tools
for repeatability
vercel.json + wrangler.toml + public/_redirects let the same static
output deploy unchanged to both Vercel (kubesimplify.com) and Cloudflare
Pages or Workers (blog.kubesimplify.com).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>1 parent 15a1f30 commit a506a45
1,764 files changed
Lines changed: 69089 additions & 702 deletions
File tree
- app
- blogs
- blog
- [slug]
- authors
- author/[handle]
- hub/[slug]
- page/[page]
- series
- [slug]
- tag/[tag]
- write
- resources
- components
- content
- blog
- lib
- public
- img
- authors
- blog
- 10-things-you-might-not-know-about-k9s
- 12-practical-grep-command-examples-in-linux
- a-beginners-guide-to-dualbooting-windows-with-ubuntu-part-1
- a-beginners-guide-to-dualbooting-windows-with-ubuntu-part-2
- a-complete-walk-through-of-devops
- a-simple-way-to-structure-your-terraform-code
- a-simplified-guide-to-yaml
- about-my-pdf-editor-project
- an-overview-of-gitops-and-argocd
- announcing-buildsafe
- api-response-in-go
- arkade
- automate-repetitive-tasks-shell-scripting
- automated-github-releases-with-github-actions-and-conventional-commits
- avoid-overspending-with-kubecost
- aws-elastic-cloud-compute
- bake-your-container-images-with-bake
- become-a-hashicorp-certified-terraform-associate-preparation-guide
- best-devops-tools-2025
- breaking-down-docker
- building-a-zero-cve-strategy
- building-apigateway-with-lambda-using-pulumi
- certified-kubernetes-security-specialist-cks-2022-exam-guide
- cicd-pipeline-github-actions-with-aws-ecs
- ckad-exam-april-2022
- claude-code-leak-what-the-source-actually-teaches
- clawspark-your-private-openclaw-ai-assistant-that-never-phones-home
- cloud-computing
- cloud-native-buildpacks-concepts
- confidential-containers-running-on-kubernetes
- container-and-kubernetes-security
- coolify
- creating-multi-node-kubernetes-cluster-locally
- day-1-what-actually-happens-when-you-type-docker-run
- day-2-your-images-are-a-supply-chain-and-it-s-probably-broken
- day-3-stop-writing-dockerfiles-from-scratch
- day-4-breaking-isolation-on-purpose-volumes-networks-and-the-real-world
- day-5-docker-compose-how-docker-actually-gets-used
- day-6-run-an-llm-on-your-laptop-with-docker
- day-7-ship-it-and-what-comes-next
- deploy-a-maven-project-on-a-tomcat-server-using-jenkins-and-aws
- deploy-a-simple-server-using-aws-terraform
- deploying-java-application-using-docker-and-kubernetes-devops-project
- ditch-the-overheating-laptop-supercharge-your-docker-workflow-with-docker-offload
- diy-how-to-build-a-kubernetes-policy-engine
- docker-captain-journey
- docker-mcp-catalog
- docker-networking-demystified
- embed-http-servers-in-wasm-with-rust-and-csharp
- enhancing-runtime-security-with-falco-my-hands-on-experience
- ephemeral-pull-request-environment-using-vcluster
- essential-linux-commands-for-devops
- event-driven-architecture-simplified-monolith-to-microservices
- everything-you-need-to-know-about-docker-compose
- everything-you-need-to-know-about-the-linux-ls-command
- exploiting-metasploitable2-using-msfconsole-kali-linux-lab
- firewall-a-networks-gatekeeper
- four-pillars-of-observability-in-kubernetes
- get-good-at-git
- getting-started-with-kind-creating-a-multi-node-local-kubernetes-cluster
- getting-started-with-ko-a-fast-container-image-builder-for-your-go-applications
- getting-started-with-kyverno
- git-and-github-a-beginners-guide
- github-actions-101-what-are-github-actions-and-how-to-use-them-a-beginners-guide
- gitops-demystified
- ha-kubernetes
- how-a-kubernetes-service-actually-works-and-all-5-types-you-need
- how-get-started-with-hashicorp-vault
- how-kubernetes-endpointslices-actually-work-and-why-endpoints-had-to-die
- how-to-backup-kubernetes-with-kasten-community-edition
- how-to-change-directory-in-shell-scripts
- how-to-install-a-kubernetes-cluster-with-kubeadm-containerd-and-cilium-a-hands-on-guide
- how-to-setup-your-ftp-server-in-linux
- implementing-kubernetes-network-policies-a-comprehensive-guide
- important-concepts-of-operating-systems
- ing-switch-119-annotations-gateway-api-traefik-impact-ratings
- ing-switch-migrate-from-ingress-nginx-to-traefik-or-gateway-api-in-minutes-not-days
- installing-prometheus-with-selinux
- introducing-unikraft-lightweight-virtualization-using-unikernels
- introduction-of-jenkins-pipeline
- introduction-to-cicd-and-cicd-pipeline
- introduction-to-cri
- introduction-to-developer-platforms-with-gimlet
- introduction-to-helm
- introduction-to-jenkins
- introduction-to-kubernetes
- introduction-to-terraform
- iptables-demo
- istio-service-mesh
- k8sgpt-tutorial-when-kubernetes-meets-ai
- keptn-getting-started
- ksctl-making-kubernetes-easy-across-clouds
- kube-scheduler-deep-dive
- kubecon-cloudnativecon-north-america-2024-recap-themes-innovations-and-community-spirit
- kubecon-cloudnativecon-rejekts-and-wasm-io-wrap-up-a-leap-into-the-future-with-webassembly-ai-and-sustainable-cloud-practices
- kubectl-run-nginx-inside
- kubeflow-machine-learning-on-kubernetes-part-1
- kubeflow-notebooks-ml-experimentation-made-easier-part-2
- kubeflow-pipelines-orchestrating-machine-learning-workflows-part-3
- kubernetes-125-dockerd
- kubernetes-126
- kubernetes-access-control-with-authentication-authorization-admission-control
- kubernetes-adoption-key-challenges-in-migrating-to-kubernetes
- kubernetes-backup-using-cloudcasa
- kubernetes-containerd-setup
- kubernetes-crio
- kubernetes-management-with-rust-a-dive-into-generic-client-go-controller-abstractions-and-crd-macros-with-kubers
- kubernetes-on-apple-macbooks-m-series
- kubernetes-scheduling-the-complete-guide
- kubernetes-v133-key-features-updates-and-what-you-need-to-know
- kubernetes-v135-whats-new-whats-changing-and-what-you-should-know
- kubesimplify-a-journey-to-remember
- kubesimplify-at-wasmio-and-kubecon-eu-2024
- kyverno-and-cosign
- kyverno-cli
- lets-learn-terraform
- lets-simplify-golang-part-1
- lets-simplify-golang-part-2
- lets-simplify-golang-part-3
- lets-talk-about-ansible
- linux-boot-process-simplified
- linux-system-directories-explained
- managing-contexts-in-kubernetes-with-plugins
- managing-your-operating-system-with-package-managers
- mastering-kubernetes-costs-from-monitoring-to-automation
- microservices
- moving-code-between-git-repositories-with-copybara
- multi-stage-docker-build
- multi-tenancy-in-2025-and-beyond
- my-first-international-conference-open-source-summit-2022
- my-journey-to-kubestronaut-on-kubernetes-10th-birthday
- my-kubecon-euvirtual-experience
- my-schedule-for-kubecon-cloudnativecon-eu-2022
- nemotron3-on-dgx-spark
- networking-fundamentals-for-devops
- nexus-repository-manager-what-is-it-and-how-to-configure-it-on-a-digital-ocean-droplet
- operating-systems-101-essential-knowledge-for-devopssre-engineers
- optimizing-kubernetes-costs-balancing-spot-and-on-demand-instances-with-topology-spread-constraints
- optimizing-scalability-a-deep-dive-into-load-testing-with-locust-on-eks
- package-managers-demystified
- perform-crud-operations-on-kubernetes-using-golang
- pods-in-kubernetes
- practical-guide-to-kubernetes-api
- progressive-rollouts-with-argo-cd-rollouts
- prometheus-explained
- pure-cilium-a-guide-for-local-load-balancing-and-bgp
- quick-bites-of-fluxcd-health-assessment
- rancher-desktop-evolution
- ready-for-wasm-day-2023
- simplified-introduction-to-bacalhau
- speeding-up-using-microk8s
- ssh-into-your-dgx-spark-from-anywhere-in-the-world-using-tailscale
- starting-your-devops-journey-as-a-windows-user
- statefulsets
- supply-chain-security-using-slsa-part-1-fundamentals
- supply-chain-security-using-slsa-part-2-the-framework
- terraform-best-practices
- testing-docker-ais-gordon-how-smart-is-it
- the-complete-guide-to-the-dd-command-in-linux
- the-secret-gems-behind-building-container-images-enter-buildkit-and-docker-buildx
- the-ultimate-guide-to-audit-logging-in-kubernetes-from-setup-to-analysis
- the-webassembly-course
- tutorial-build-a-cloud-cost-monitoring-system-with-terraform-ansible-and-komiser
- understanding-docker-desktop-all-in-one-platform-for-containers
- understanding-etcd-in-kubernetes-a-beginners-guide
- understanding-how-containers-work-behind-the-scenes
- understanding-the-architecture-of-kubernetes-a-beginners-guide
- understanding-the-ins-and-outs-of-git-using-github
- what-is-reproducibility-and-why-does-it-matter
- what-is-shell-scripting
- why-are-network-policies-in-kubernetes-so-hard-to-understand
- why-devops-case-study
- wtf-is-linux-shell-command-substitution
- yours-kindly-drone
- scripts
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
| 158 | + | |
| 159 | + | |
| 160 | + | |
| 161 | + | |
| 162 | + | |
| 163 | + | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
| 267 | + | |
| 268 | + | |
| 269 | + | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
| 301 | + | |
| 302 | + | |
| 303 | + | |
| 304 | + | |
| 305 | + | |
| 306 | + | |
| 307 | + | |
| 308 | + | |
| 309 | + | |
| 310 | + | |
| 311 | + | |
| 312 | + | |
| 313 | + | |
| 314 | + | |
| 315 | + | |
| 316 | + | |
| 317 | + | |
| 318 | + | |
| 319 | + | |
| 320 | + | |
| 321 | + | |
| 322 | + | |
| 323 | + | |
| 324 | + | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
0 commit comments