Documentation portfolio for Justin Arndt, technical writer. Live at j-arndt.github.io.
This repository is itself a work sample. It runs the same way a production documentation project runs: content in Markdown, changes through pull requests, and a CI pipeline that refuses to publish anything that fails a quality gate.
| Section | What it demonstrates |
|---|---|
| FileMaker Data API reference | API documentation: a hand-authored OpenAPI 3.1 specification plus task-oriented reference pages with curl, Python, and JavaScript examples |
| Qdrant quickstart | Developer onboarding: a copy-paste-safe guide with a verification checkpoint after every step |
| Audit trail architecture | Long-form conceptual writing with Mermaid diagrams, drawn from eight years documenting validated systems |
| Change control essay | Positioning: how pharmaceutical document control maps to docs-as-code |
| How this site is built | Content operations: the pipeline explained in its own documentation |
The sidebar is a flat, five-item map: one reference set, one tutorial, one conceptual deep dive, one essay, one meta page. Three clicks reaches any page. Reference material is grouped under a single collapsed-by-default category so tutorial and conceptual readers never scroll past endpoint pages.
Every pull request runs three independent gates (.github/workflows/ci.yml):
- Build and markdown lint.
markdownlint-cli2checks structure, then a full Docusaurus build fails on any broken internal link. - Prose lint. Vale checks every page against the Google developer documentation style guide, with two documented deviations for first-person voice (
.vale.ini). - Link check. Lychee verifies every external link, with bot-blocking response codes accepted and localhost excluded (
lychee.toml).
Merges to main deploy automatically to GitHub Pages (.github/workflows/deploy.yml).
npm ci # install
npm start # dev server at localhost:3000
npm run build # production build, fails on broken links
npm run lint:md # markdown structure
npm install -g mdx2vast # once; Vale needs it to parse .mdx files
npm run lint:prose # Vale against the Google style guideThe configuration and tooling are MIT licensed. The written content is all rights reserved by Justin Arndt.