Contributing to the Docs
This page explains how to contribute to this documentation site. The site is built with Astro Starlight and lives in the noix-docs repository.
Prerequisites
Section titled “Prerequisites”- Node 22 or later (enforced by the
enginesfield inpackage.json). - Familiarity with Markdown and basic Git.
Local development
Section titled “Local development”# Install dependenciesnpm install
# Start the Astro dev server (live reload)npm run dev
# Build for productionnpm run build
# Type-check MDX and Astro componentsnpm run checkThe dev server starts at http://localhost:4321 by default. Changes to Markdown files are reflected immediately without a restart.
Repository layout
Section titled “Repository layout”Marketix content lives under src/content/docs/marketix/:
src/content/docs/marketix/├── admin/│ ├── installation/ # requirements, docker, environment, first-run│ ├── configuration/ # mailer, storage, branding│ ├── introduction.md│ ├── operations.md│ ├── security.md│ └── user-and-project-management.md├── user/│ ├── getting-started.md│ ├── projects.md│ ├── links.md│ ├── domains.md│ ├── qr-codes.md│ ├── pixels.md│ ├── statistics-reports.md│ ├── team.md│ └── account.md└── reference/ ├── environment-variables.md ├── cli-commands.md ├── faq.md ├── contributing-docs.md # this page └── changelog.mdEach folder maps to a section in Marketix’s scoped sidebar, which is generated automatically — you do not need to register new files anywhere.
Adding a page
Section titled “Adding a page”- Create a
.mdfile in the correct folder undersrc/content/docs/marketix/{admin,user,reference}/. - Add the required frontmatter (see below).
- Write the content following the house style.
- Run
npm run buildlocally to confirm no broken links are introduced.
Frontmatter
Section titled “Frontmatter”Every page requires:
---title: Page Titledescription: One sentence, under 160 characters, for SEO and in-site search.sidebar: order: <integer>---sidebar.order controls the position of the page within its folder. Use the next integer in the existing sequence.
House style
Section titled “House style”- Voice: Second person (“you”), active voice, no marketing language.
- Headings: Start body headings at
##. The pagetitlebecomes the<h1>automatically — do not add a top-level#heading. - Code blocks: Always specify a language. Use
```bashfor shell commands,```yamlfor YAML,```inifor.env/KEY=valueblocks. Do not use```env— Expressive Code has noenvhighlighter and the build emits a warning. - Asides / callouts: Use Starlight’s built-in aside syntax:
:::noteInformational callout.:::
:::tipHelpful suggestion.:::
:::cautionSomething to be careful about.:::
:::dangerDestructive or irreversible action warning.:::- Tables: Prefer Markdown tables for reference content (env vars, options, commands).
- Internal links: Use absolute paths within the
/marketix/namespace, for example:
[Environment Variables](/marketix/reference/environment-variables/)[Docker deployment](/marketix/admin/installation/docker/)Never use root-relative /admin/... paths. Never link to a page that does not exist.
Link integrity
Section titled “Link integrity”The build runs starlight-links-validator. Any broken internal link causes the build to fail. Before opening a pull request:
- Run
npm run buildlocally. - Verify the output shows 0 broken links.
If you are not sure whether a target page exists yet, reference the section in prose rather than adding a link.
Submitting changes
Section titled “Submitting changes”Open a pull request against the main branch of noix-docs. The CI pipeline runs npm run build (which includes the link validator) on every pull request.