Skip to content

feat: add Quickstart template with language and IDE selection#24904

Merged
nickvigilante merged 10 commits into
mainfrom
quickstart-template
May 6, 2026
Merged

feat: add Quickstart template with language and IDE selection#24904
nickvigilante merged 10 commits into
mainfrom
quickstart-template

Conversation

@nickvigilante
Copy link
Copy Markdown
Contributor

@nickvigilante nickvigilante commented May 1, 2026

Add a new Quickstart starter template that lets users pick programming languages, editors, and an optional Git repo to clone. The template uses Docker under the hood but presents a developer-focused experience: pick your tools, start coding.

What's included

  • Languages parameter (multi-select): Python, Node.js, Go, Rust, Java, C/C++
  • IDEs parameter (multi-select): VS Code (Browser), VS Code Desktop, Cursor, JetBrains, Zed, Windsurf
  • Git repo parameter: Optional URL to clone on workspace start
  • JetBrains filtering: Maps selected languages to relevant IDE codes (Python → PyCharm, Go → GoLand, etc.)
  • Docker precondition check: Uses data "external" + terraform_data precondition to surface a friendly error when Docker is unavailable, before the Docker provider fails with a cryptic message
  • 4 presets: Web Development, Backend (Go), Data Science, Full Stack
  • Single install script: All languages install in one coder_script to avoid apt-get lock conflicts (agent scripts run in parallel via errgroup)
Design decisions
  • Docker as invisible backend: Docker is required on the Coder server but never mentioned in the user-facing parameter UI. The experience is entirely "pick languages, pick editors, start coding."
  • coder_script over startup_script: Language installs use a templated script file (install-languages.sh.tftpl) driven by the languages parameter. A single script avoids dpkg lock contention since coder_script resources execute concurrently.
  • data "external" for Docker check: The external provider probes Docker availability independently of the Docker provider. If Docker is down, the terraform_data precondition fails with a human-readable message before any docker_* resource is evaluated. This depends on the Docker provider connecting lazily (at resource eval time, not at provider init), which current behavior confirms.
  • JetBrains filtering by language: Rather than showing all 9 JetBrains IDEs, the template computes relevant IDE codes from the language selection (e.g. Python → PY, Go → GO) and passes them as default to the JetBrains module.
  • Arch-aware Go install: The install script detects uname -m to download the correct Go binary for amd64 or arm64.
Screenshots and recordings from the UI

Screenshot 2026-05-05 at 2 14 20 PM Screenshot 2026-05-05 at 2 15 06 PM

Screen.Recording.2026-05-05.at.2.50.50.PM.mov

Note

This PR was authored by Coder Agents.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 1, 2026

Docs preview

📖 View docs preview for docs/reference/cli/templates_init.md

@nickvigilante nickvigilante changed the title feat(examples/templates): add Quickstart template with language and IDE selection feat: add Quickstart template with language and IDE selection May 1, 2026
@nickvigilante nickvigilante force-pushed the quickstart-template branch 2 times, most recently from 64c5b28 to d9976c3 Compare May 5, 2026 17:23
Comment on lines +13 to +18
"quickstart",
"docker",
"kubernetes",
"aws-linux",
"aws-windows",
"gcp-linux",
"gcp-windows",
"azure-linux",
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm open to a different combo of starter templates to feature on the main Templates page, if we feel these 6 don't accurately reflect what we want. However, I do think that whatever we choose, Quickstart should always be the first one in the list.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I think for the sake of this PR adding Quickstart and Azure feels like a solid changeset

@nickvigilante nickvigilante force-pushed the quickstart-template branch 2 times, most recently from 2c0b669 to a68ea8c Compare May 5, 2026 19:24
@nickvigilante nickvigilante marked this pull request as ready for review May 5, 2026 19:24
Copy link
Copy Markdown
Member

@bpmct bpmct left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just tried this and I'm really happy with it! One thing that could be nice is adding support for dotfiles with our dotfiles module to show users how they can personalize their workspaces too (doesn't need to be a part of a preset) but I'm super impressed with how simple this is and it works. Also the waiting time to install the language isn't bad and admins can obviously bake these into images long-term

Comment thread examples/templates/quickstart/main.tf Outdated
Comment on lines +13 to +18
"quickstart",
"docker",
"kubernetes",
"aws-linux",
"aws-windows",
"gcp-linux",
"gcp-windows",
"azure-linux",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, I think for the sake of this PR adding Quickstart and Azure feels like a solid changeset

Comment thread docs/tutorials/quickstart.md
…DE selection

Add a new Quickstart starter template that lets users pick programming
languages, editors, and an optional Git repo to clone. JetBrains IDEs
are filtered by the selected languages. Includes a Docker daemon
precondition check via the external provider for a friendlier error
when Docker is unavailable.
…able

The default=true preset pre-selects on form load and locks parameter
values, preventing users from customizing their language and IDE
selections.
…rdering and JetBrains handling

- Rename display_name from 'Quickstart' to 'Coder Quickstart'
- Add order attributes to parameters for consistent form layout
- Replace JetBrains module with conditional coder_parameter to avoid
  ghost parameter when JetBrains is not selected in IDEs
- Comment out Docker availability check (blocks template import due to
  start_count=1 during dry-run)
- Remove '(default)' from Web Development preset docs
- Regenerate examples.gen.json
Restore docs/admin/security/audit-logs.md and
site/src/api/rbacresourcesGenerated.ts to match main. These were
swept in by an earlier 'make gen' run that produced output drifting
from main. The drift is purely cosmetic (sort ordering and stale
content on main), but it is unrelated to the quickstart template
work and was confusing to reviewers.
@nickvigilante nickvigilante force-pushed the quickstart-template branch from fcf428f to 4f0e83a Compare May 6, 2026 13:35
@nickvigilante nickvigilante enabled auto-merge (squash) May 6, 2026 13:35
@nickvigilante nickvigilante merged commit 369a191 into main May 6, 2026
48 of 52 checks passed
@nickvigilante nickvigilante deleted the quickstart-template branch May 6, 2026 13:55
@github-actions github-actions Bot locked and limited conversation to collaborators May 6, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants