Maintainer Guide
How to contribute to and maintain this handbook. Everyone is a maintainer.
The one rule
If someone asked you a question twice, write the answer here.
Everything else in this guide is tactical. That rule is strategic.
Quick start β editing with Obsidian
This handbook is a folder of plain text files. The recommended editor is Obsidian β free, offline, and works directly on the files.
First-time setup
- Download and install Obsidian (free).
- Open Obsidian β Open folder as vault β select the
gstarlink-handbookfolder. - Thatβs it. All pages appear in the left sidebar under
pages/.
Obsidian tips
- Files end in
.mdxβ Obsidian treats them like Markdown. - Use Live Preview mode (default) for a WYSIWYG-like experience.
- The folder structure in the sidebar mirrors the website navigation.
- Ignore the
node_modules/,.next/, andscripts/folders β Obsidian already hides them.
Previewing changes locally
To see your changes exactly as they appear on the website:
cd gstarlink-handbook
npm install # first time only
npm run dev # starts on http://localhost:3000Open http://localhost:3000 and navigate to your page. Changes save automatically β just refresh the browser.
File structure
Every page in the handbook is an .mdx file inside the pages/ folder:
pages/
βββ _meta.ts β top-level navigation order
βββ index.mdx β home page
βββ company/
β βββ _meta.ts β controls sidebar order for this section
β βββ index.mdx β "Company" section overview
β βββ mission.mdx
β βββ ...
βββ customer-service/
β βββ _meta.ts
β βββ sop/
β β βββ _meta.ts
β β βββ ...
β βββ training/
β βββ ...
βββ operations/
βββ product/
βββ tech/
βββ marketing/
βββ people/The folder hierarchy becomes the URL:
pages/customer-service/sop/communication.mdxβ/customer-service/sop/communication
Creating a new page
-
Create the file in the right folder. Use lowercase, hyphen-separated filenames:
pages/customer-service/sop/my-new-topic.mdx -
Add frontmatter at the very top of the file:
--- title: 'My New Topic' public: false last_updated: 2026-04-23 owner: Your Name --- # My New Topic Content starts here. -
Add it to
_meta.tsin the same folder to control where it appears in the sidebar (see below).
Controlling sidebar order β _meta.ts
Each folder has a _meta.ts file that sets the sidebar title and order for pages in that folder.
export default {
"index": "Overview",
"communication": "Communication",
"order-fulfilment": "Order fulfilment",
"my-new-topic": "My New Topic", // β add your page here
}- The key matches the filename (without
.mdx). - The value is the title shown in the sidebar.
- Pages not listed appear at the bottom in alphabetical order.
Frontmatter reference
Every .mdx file must start with a YAML frontmatter block:
---
title: 'Page Title' # required β shown in browser tab and sidebar
public: false # required β see below
last_updated: 2026-04-23 # update this whenever you edit the page
owner: Ray # the person accountable for accuracy
---public: false vs public: true
| Value | Meaning |
|---|---|
public: false | Internal only β never appears on the public docs site |
public: true | Safe to show to customers (product descriptions, FAQs, activation guides) |
When in doubt β use public: false. It is always easier to open a page up later than to remove it from Googleβs index.
Never mark public: true if the page contains:
- Costs, margins, or supplier pricing
- Passwords, API keys, or credentials
- Internal strategy, org charts, or individual performance
MDX writing rules
MDX is Markdown with JSX support. It is stricter than regular Markdown β broken syntax causes the whole page to fail with an error. Follow these rules:
β Standard Markdown β always works
# Heading 1
## Heading 2
**bold**, *italic*, `inline code`
- bullet list
- another item
1. numbered list
2. another item
[Link text](https://example.com)
> Blockquote textβ οΈ HTML tags β must be self-closing void elements
Void HTML elements (<br>, <hr>, <img>) must include the closing slash:
<!-- β Wrong β will crash the page -->
<br>
<img src="..." alt="...">
<!-- β
Correct -->
<br />
<img src="..." alt="..." />β οΈ < before numbers β must be escaped
A bare < followed by a number is misread as a JSX tag:
<!-- β Wrong β will crash the page -->
Response time is <24 hours.
Price is <500 AUD.
<!-- β
Correct β use the HTML entity -->
Response time is <24 hours.
Price is <500 AUD.β οΈ No style="..." string attributes
Inline styles must be written as a JavaScript object, not a string:
<!-- β Wrong -->
<div style="color: red">...</div>
<!-- β
Correct -->
<div style={{ color: 'red' }}>...</div>β οΈ Images β use standard Markdown syntax
Always use Markdown image syntax, not HTML:
<!-- β
Correct -->

<!-- β Avoid unless necessary -->
<img src="https://example.com/image.png" alt="Alt text" />Do not reference local GitBook asset paths (.gitbook/assets/...) β those images donβt exist in this repository.
Creating a new section (folder)
To add a whole new section (e.g. pages/finance/):
- Create the folder and an
index.mdxinside it. - Create a
_meta.tsinside it listing all pages. - Add the section to the parent
_meta.ts:
// pages/_meta.ts
export default {
"company": "Company",
"operations": "Operations",
"finance": "Finance", // β new section
...
}Writing style
- Write for the person joining next month β not for the person who already knows.
- Decisions get a reason. βWe use X because Y.β Not just βWe use X.β
- Sentences over bullets when you are explaining reasoning. Bullets lose context.
- Update
last_updatedwhen you change a page. Stale pages get removed in quarterly reviews. - Owner is a person, not a team. When ownership changes, update the field.
Deprecating a page
Donβt delete pages immediately β they are evidence of what we used to think.
- Add
deprecated: trueto the frontmatter. - Add a notice at the top of the page:
> **Deprecated.** This page is outdated. See [New Page](/path/to/new) instead. - Leave it for 90 days. If no one objects, delete it.
The two-question test
Before you save any change, ask:
- Will someone find this when they search for it? If not, fix the title or placement.
- Will this still be true in three months? If not, add dates, owners, and conditions.