Static North has three copies of the site, each with a different job:
- your local project folder is where you write and test changes;
- GitHub is the source of truth and history of every published version;
- the VPS runs the public site, but it is not where you edit files.
The normal loop is: make a change locally, check it, commit it, push it, then let GitHub deploy it to the VPS.
Add or update an article
Articles are MDX files in content/. Choose the collection that fits the article:
content/fixes/ → /fixes/
content/guides/ → /guides/
content/scripts/ → /scripts/
content/recipes/ → /recipes/
content/downloads/ → /downloads/Copy a nearby article, rename it with a lowercase hyphenated filename, then update its frontmatter. For example, this file is available at:
content/guides/publishing-static-north-updates.mdx
→ /guides/publishing-static-north-updatesThe minimum useful frontmatter is:
---
title: "A clear, specific title"
description: "A short summary that works in archive cards and search results."
type: "guide"
category: "Documentation"
tags:
- Git
- Deployment
date: "2026-08-30"
draft: false
---Use draft: true while an article is unfinished. Drafts stay out of the homepage, collection pages, search, tags, and public routes.
Preview locally
From the project folder, start the local development site:
npm run devOpen the address it prints, usually http://localhost:3000. Check the new article’s URL, headings, code blocks, tags, related entries, and mobile layout before publishing. Stop the server with Ctrl+C when you are finished.
Run the pre-publish checks
Run these from the project root before you commit:
npm run typecheck
npm run lint
npm run build -- --webpackThe build command creates a production version locally. The --webpack flag is intentional for this workstation: it avoids a local Turbopack sandbox limitation. GitHub runs the same checks again before it deploys anything.
If a check fails, fix the reported issue locally and run that check again. Do not push a known failure just to see whether the live server accepts it.
Commit and push
First, inspect what changed:
git status
git diffThen stage only the files you mean to publish, make a short commit, and push it:
git add content/guides/your-new-article.mdx
git commit -m "Add guide for publishing updates"
git pushUse a plain-language commit message that describes the result, not the process. Examples:
Add SSH key permissions fix
Correct pizza dough baking temperature
Update Exchange authentication guideWhat happens after git push
Pushing to the main branch starts the Deploy Static North workflow in GitHub Actions. It:
- installs the exact dependencies recorded in
package-lock.json; - runs the TypeScript, lint, and production-build checks;
- uploads the checked source to the VPS using a dedicated deploy key;
- rebuilds and restarts the Docker container; and
- confirms the application answers successfully before calling the deployment complete.
Open the repository’s Actions tab to watch it. A successful run means the new commit is live at staticnorth.eighty6.ca.
Most releases take a few minutes because the VPS builds a fresh production container. You do not need to SSH into the server while the workflow runs.
Verify the public site
After the Action has a green checkmark, open the article’s public URL in a normal browser. Check the heading, metadata, formatting, links, and any commands carefully enough to make sure the page says what you intended.
For a new guide named my-new-guide.mdx, the URL would be:
https://staticnorth.eighty6.ca/guides/my-new-guideIf the content looks wrong but the deployment succeeded, fix it in the local file and repeat the same commit-and-push process. GitHub keeps the complete history, so every correction is traceable.
When a deployment fails
A failed GitHub Action does not publish the failed commit. The previous working version stays online.
Open the failed job in GitHub Actions and read the first meaningful error. Common causes are an MDX syntax mistake, missing frontmatter, a TypeScript error, or a failed link/component build. Fix the problem locally, run the relevant check, commit the correction, and push again.
Only retry the exact same workflow when the failure is clearly temporary—for example, a GitHub runner or network outage. For code or content errors, make a new correcting commit instead.
Roll back a published change
If a published update needs to come down, revert its Git commit rather than editing the VPS:
git log --oneline
git revert COMMIT_SHA
git pushReplace COMMIT_SHA with the short identifier shown by git log. Git creates a new commit that reverses the selected one, and the normal deployment workflow publishes that rollback.
This is safer than rewriting history because it leaves a clear record of both the original change and the recovery.
A compact publishing checklist
Before pushing, confirm:
- the article is in the correct
content/collection; - its filename and frontmatter are accurate;
draftis set correctly;- you previewed the intended URL locally;
- typecheck, lint, and build passed; and
git statusshows only changes you expect.
After pushing, confirm:
- the Deploy Static North Action has a green checkmark; and
- the live article reads correctly at its public URL.
That is the whole system: write locally, keep GitHub as the record, and let the automated deployment update the VPS.