docs: migrate documentation from MkDocs to Fern#581
Open
Conversation
Adds a Fern Docs build under fern/ alongside the existing mkdocs site. Production target docs.nvidia.com/nemo/datadesigner with floating-latest pointer (latest.yml symlink) at v0.5.8. Migrated all concept, recipe, plugin, dev-note, and tutorial pages to MDX with NVIDIA theme and custom components (Authors, MetricsTable, TrajectoryViewer, NotebookViewer, BadgeLinks). Tutorial notebooks now render via NotebookViewer with captured outputs (text, DataFrames, inline images) - new make targets generate-fern-notebooks and generate-fern-notebooks-with-outputs drive the .py -> executed .ipynb -> Fern JSON+TS pipeline, pinning docs to Python 3.13 to dodge pyarrow wheel issues on 3.14. Python API reference is configured via Fern libraries: pointing at data-designer-config; output is gitignored and regenerated locally with 'fern docs md generate'. Co-Authored-By: Claude Opus 4.7 <[email protected]> Signed-off-by: Lawrence Lane <[email protected]>
Contributor
|
Thank you for your submission! We ask that you all sign our Developer Certificate of Origin before we can accept your contribution. You can sign the DCO by adding a comment below using this text: I have read the DCO document and I hereby sign the DCO. 1 out of 2 committers have signed the DCO. |
Contributor
|
Docs preview: https://be7a8a93.dd-docs-preview.pages.dev
|
📋 Summary
Adds a Fern Docs build under
fern/alongside the existing MkDocs site. Production target isdocs.nvidia.com/nemo/datadesignerwith a floating-latestpointer (latest.ymlsymlink) atv0.5.8. All concept, recipe, plugin, dev-note, and tutorial pages are migrated to MDX with the NVIDIA theme; tutorial notebooks render via<NotebookViewer>with captured outputs (text, DataFrames, inline images).🔄 Changes
✨ Added
fern/Fern Docs build:docs.yml,fern.config.json, NVIDIA theme CSS, version-pinned nav (v0.5.8.yml), 64 MDX pages organized into Concepts, Tutorials, Recipes, Plugins, Code Reference, Dev Notes, plus landing.versions/latest.ymlis a Unix symlink tov0.5.8.yml; same MDX backs bothslug: latestandslug: v0.5.8. New releases re-target the symlink (recipe infern/README.md).Authors,BadgeLinks,CustomCard,CustomFooter,ExpandableCode,MetricsTable,NotebookViewer,Tag,TrajectoryViewer— plus paired CSS infern/styles/..authors.yml+ typedauthors-data.ts), each post now uses<Authors ids={[...]} />;deep-research-trajectoriesrenders 31 turns / 50 tool calls via<TrajectoryViewer>driven by typed example data; benchmark tables intext-to-sql/rqa/structured-outputs-from-nemotron/search-agentuse<MetricsTable>with auto best-value highlighting.fern/scripts/ipynb-to-fern-json.pyconverts.ipynb→fern/components/notebooks/*.{json,ts}, auto-stripping the leading Colab badge cell; new make targetsgenerate-fern-notebooksandgenerate-fern-notebooks-with-outputsdrive the.py→ executed.ipynb→ Fern JSON+TS chain.libraries:pointing atpackages/data-designer-config/src/data_designer/config; output (fern/code-reference/) is gitignored and regenerated locally withfern docs md generate.fern/README.mdmaintainer guide: prereqs, first-time setup, versioning recipe, folder layout.🔧 Changed
Makefiledocs section pins to Python 3.13 viaDOCS_PYTHON ?= 3.13(default Python untouched) sopyarrowresolves wheels on machines running Python 3.14+; certifi-routed CA bundle (DOCS_CERTS) fixes SSL on python.org-installer Pythons;convert-execute-notebooksloops per-file with|| failed=...so one notebook's missing API key doesn't kill the chain;generate-fern-notebooksreads fromdocs/notebooks/(executed, outputs preserved) when present, falling back todocs/colab_notebooks/otherwise..gitignoreaddsfern/code-reference/(Fern libraries output).docs/colab_notebooks/*.ipynbregenerated throughconvert-execute-notebooks→generate-colab-notebooksso they reflect the latest source.🧪 Testing
fern checkpasses (0 errors, 1 unrelated theme contrast warning)make generate-fern-notebooksruns idempotently end-to-end; auto-detectsdocs/notebooks/sourcemake generate-fern-notebooks-with-outputsproduces real LLM outputs for tutorials 1–4 (12.3k captured cells across DataFrame HTML / plain text / inline image MIME types); 5–6 fall back to existing snapshots withoutOPENROUTER_API_KEYfern docs devboots locally; spot-checked landing, Dev Notes index, tutorials, recipes, deep-research-trajectoriesmake testnot run (docs-only change; no Python source touched)✅ Checklist
docs:prefix, imperative, ≤72 char subject)🤖 Generated with Claude Code