Skip to content

docs: publish user docs at docs.coder.ddev.com with Zensical, add freeform guide - #231

Merged
rfay merged 2 commits into
mainfrom
20261105_rfay_docs_site_freeform
Nov 5, 2026
Merged

rfay merged 2 commits into
mainfrom
20261105_rfay_docs_site_freeform

Conversation

@rfay

@rfay rfay commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

Short Summary (TL;DR)

Moves the Markdown docs into a Zensical site, set up the same way as ddev/ddev's, to be published by Read the Docs at docs.coder.ddev.com. Adds user docs for hosted coder.ddev.com, including a freeform guide, and puts a Documentation button at the top of start.coder.ddev.com.

The Issue

Jekyll rendered the Markdown docs on start.coder.ddev.com with no navigation or search, and the landing page linked only the Drupal quickstart. Freeform had no user guide, and its README was out of date: it still described single-project URLs and showed enable_adminer as a user choice, but it is an admin-only template variable. User and admin material were mixed together.

How This PR Solves The Issue

  • The docs move to docs/content/ with a root mkdocs.yml, docs/requirements.txt and .readthedocs.yaml, all taken from ddev/ddev. GitHub Pages serves one custom domain per repository, and start.coder.ddev.com keeps it for the landing pages and deep-link builders.
  • New pages for coder.ddev.com users: getting started, access, choosing a template, the freeform guide (every parameter, first project, multiple projects, recipes, services and add-ons, sharing), workspace lifecycle (persistence, the idle-deletion policy, the startup hook, disk), editors/SSH/files, Claude Code and troubleshooting. Existing docs move under Drupal, Reference and Self-Hosting. The Drupal quickstart's links to the issue and core pickers now point to start.coder.ddev.com, since the page no longer lives on that site.
  • Landing page: a top bar with a Documentation button, docs links in the intro box, the freeform tile and Resources, and a Documentation link in the drupal-issue and drupal-core page headers. Jekyll excludes docs/content/, and jekyll-redirect-from stubs send the old /user/*, /admin/*, /architecture/* and /reference/* URLs to the new pages.
  • freeform/README.md is cut down to a contributor summary that links to the docs. README and AGENTS.md now describe the two sites and the docs checks.

Manual Testing Instructions

  • Open the Read the Docs PR preview and check the navigation, search and the freeform pages.
  • Open the start.coder.ddev.com PR preview. The Documentation button should be at the top, and /user/quickstart should redirect to https://docs.coder.ddev.com/drupal/quickstart/.
  • On staging-coder.ddev.com, follow the freeform pages: create a workspace with two project names, then do the first project, add a second project, try a few recipes and turn on Public Sharing. The recipes, especially WordPress, Node.js and Vite, have not been run in a workspace yet.

Automated Testing Overview

A new docs-check.yml workflow runs zensical build --strict, markdownlint (ddev's .markdownlint.jsonc), linkspector and scripts/check-doc-params.sh. That script fails when a param.<name> deep link under docs/ names a coder_parameter that no template or shared module defines. make docs-check runs the same checks locally, except linkspector. Fixing the existing docs for markdownlint also fixed lists and code blocks that were rendering as plain paragraphs. Dead external links were fixed, and a full local linkspector run (0.5.6, all pages rather than only added lines) reports every link valid. The coder-ddev-com message templates are excluded from linkspector because they contain placeholder URLs by design.

Release/Deployment Notes

Before merging, create a Read the Docs project for ddev/coder-ddev with PR builds and single-version URLs, add the custom domain docs.coder.ddev.com, and add the DNS CNAME. Until then, the redirect stubs on start.coder.ddev.com point at a domain that doesn't resolve.

🤖 Developed with assistance from Claude Code

https://claude.ai/code/session_01UrTUMw3UoHt66UH5tSoYTd

…eform guide

## Short Summary (TL;DR)

Moves the Markdown docs into a Zensical site, set up the same way as ddev/ddev's, to be published by Read the Docs at docs.coder.ddev.com. Adds user docs for hosted coder.ddev.com, including a freeform guide, and puts a Documentation button at the top of start.coder.ddev.com.

## The Issue

Jekyll rendered the Markdown docs on start.coder.ddev.com with no navigation or search, and the landing page linked only the Drupal quickstart. Freeform had no user guide, and its README was out of date: it still described single-project URLs and showed `enable_adminer` as a user choice, but it is an admin-only template variable. User and admin material were mixed together.

## How This PR Solves The Issue

- The docs move to `docs/content/` with a root `mkdocs.yml`, `docs/requirements.txt` and `.readthedocs.yaml`, all taken from ddev/ddev. GitHub Pages serves one custom domain per repository, and start.coder.ddev.com keeps it for the landing pages and deep-link builders.
- New pages for coder.ddev.com users: getting started, access, choosing a template, the freeform guide (every parameter, first project, multiple projects, recipes, services and add-ons, sharing), workspace lifecycle (persistence, the idle-deletion policy, the startup hook, disk), editors/SSH/files, Claude Code and troubleshooting. Existing docs move under Drupal, Reference and Self-Hosting.
- Landing page: a top bar with a Documentation button, docs links in the intro box, the freeform tile and Resources, and a Documentation link in the drupal-issue and drupal-core page headers. Jekyll excludes `docs/content/`, and `jekyll-redirect-from` stubs send the old `/user/*`, `/admin/*`, `/architecture/*` and `/reference/*` URLs to the new pages.
- `freeform/README.md` is cut down to a contributor summary that links to the docs. README and AGENTS.md now describe the two sites and the docs checks.

## Manual Testing Instructions

- Open the Read the Docs PR preview and check the navigation, search and the freeform pages.
- Open the start.coder.ddev.com PR preview. The Documentation button should be at the top, and `/user/quickstart` should redirect to `https://docs.coder.ddev.com/drupal/quickstart/`.
- On staging-coder.ddev.com, follow the freeform pages: create a workspace with two project names, then do the first project, add a second project, try a few recipes and turn on Public Sharing. The recipes, especially WordPress, Node.js and Vite, have not been run in a workspace yet.

## Automated Testing Overview

A new `docs-check.yml` workflow runs `zensical build --strict`, markdownlint (ddev's `.markdownlint.jsonc`), linkspector and `scripts/check-doc-params.sh`. That script fails when a `param.<name>` deep link under `docs/` names a `coder_parameter` that no template or shared module defines. `make docs-check` runs the same checks locally, except linkspector. Fixing the existing docs for markdownlint also fixed lists and code blocks that were rendering as plain paragraphs. Five dead external links were fixed by hand.

## Release/Deployment Notes

Before merging, create a Read the Docs project for ddev/coder-ddev with PR builds and single-version URLs, add the custom domain `docs.coder.ddev.com`, and add the DNS CNAME. Until then, the redirect stubs on start.coder.ddev.com point at a domain that doesn't resolve.

🤖 Developed with assistance from [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UrTUMw3UoHt66UH5tSoYTd
@github-actions

github-actions Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
PR Preview Action v1.8.2
Preview removed because the pull request was closed.
2026-11-05 15:48 UTC

The `docs-check` linkspector step failed on a placeholder link in the sponsor notification template, which markdownlint's auto-fix had turned into a broken URL. A full linkspector run, which pull request mode skips because it checks only added lines, found two more problems in the Drupal quickstart: links to `/drupal-issue` and `/drupal-core` that only worked when the page was served from start.coder.ddev.com, and a moved repository (`ddev-drupal-contrib` now lives under `ddev`).

- Write the template's org URL placeholder as code instead of a link, and exclude the `coder-ddev-com` message templates from linkspector, since they contain placeholder URLs by design.
- Replace the quickstart's Jekyll-styled HTML tiles, which Zensical doesn't style, with Zensical cards that link to the pickers on start.coder.ddev.com.
- Point the `ddev-drupal-contrib` link at `ddev/ddev-drupal-contrib`.

A full local linkspector run (0.5.6) now reports all links valid.

🤖 Developed with assistance from [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UrTUMw3UoHt66UH5tSoYTd
@rfay
rfay merged commit 2836af7 into main Nov 5, 2026
18 of 20 checks passed
@rfay
rfay deleted the 20261105_rfay_docs_site_freeform branch November 5, 2026 15:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants