Skip to content

templates construct has no way to set a project start date (template dates always anchor to construction date) #659

Description

@jethrojones

What happens

  The Basecamp web UI prompts for a start date when creating a project from a template and shifts all the template's relative dates accordingly. basecamp templates construct has no equivalent — --name and --description are the only flags — so every constructed project anchors its dates to today.

  What I tried

  Passing starts_on through the raw API at both the top level and inside project:

  basecamp api post templates/<TEMPLATE_ID>/project_constructions.json \
    -d '{"project":{"name":"...","description":"...","starts_on":"2026-09-01"},"starts_on":"2026-09-01"}'

  The request succeeds (construction created, status pending → completed), but starts_on is silently ignored in both positions.

  Observed result

  Template with relative dates spanning day −2 to ~day +68, constructed on 2026-08-25 with starts_on: 2026-09-01:

  ┌───────────────────────┬───────────────────────────┬────────────┐
  │                       │ Expected (start = Sept 1) │   Actual   │
  ├───────────────────────┼───────────────────────────┼────────────┤
  │ Earliest to-do due_on │ 2026-08-30                │ 2026-08-23 │
  ├───────────────────────┼───────────────────────────┼────────────┤
  │ Latest to-do due_on   │ 2026-11-06                │ 2026-10-30 │
  ├───────────────────────┼───────────────────────────┼────────────┤
  │ Schedule entry        │ 2026-09-20                │ 2026-09-13 │
  └───────────────────────┴───────────────────────────┴────────────┘

  Dates anchored to the construction date (day 0 = 2026-08-25), not the requested start date.

  Confirmed against a second project built from the same template on 2026-07-28: earliest to-do 2026-07-26 — same day-0-equals-construction-date behavior.

  Impact

  Any scripted template construction has to construct first, then walk every to-do list plus the schedule and re-PUT each date with a computed offset. That's N+M extra API calls per project and has to reproduce the template's day-0 convention by hand.

  Ask

  Either a --starts-on flag on templates construct if the API supports it via some parameter I haven't found, or a documentation note that this is UI-only so people don't burn time probing for it.

Project Template ID for your review: https://3.basecamp.com/3104101/templates/34442718

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions