Skip to content
User story map templates

Story Map — Internal Developer Portal

Platform-team milestones along the service lifecycle — scaffold, ship, operate, comply — with bracketed estimates; the golden path gets an engineer to production before lunch but leaves every compliance control to the last milestone.

Template previewUser story map
Internal developer portal — platform roadmapPersona: Backend engineer shipping their first service · Goal: Empty repository to production before lunch, without asking anyoneM1 — Golden path47 pts · 5 cardscovers 3/4 · cum 47M2 — Self-service63 pts · 5 cardscovers 3/4 · cum 110M3 — Governance50 pts · 5 cardscovers 3/4 · cum 160Later8 pts · 1 cardcovers 1/4 · cum 168BACKBONEactivities, left to rightTASKSthe walking stepsScaffold34 pts · 4 cards · 2 tasksShip68 pts · 5 cards · 2 tasksOperate37 pts · 4 cards · 2 tasksComply29 pts · 3 cards · 2 tasksgapCreate a serviceRegister ownershipBuild and testDeployObserveRespondProve controlsRetireTemplate repository with CIalready wired up8Catalogue entry with anowning team5Pipeline that builds, testsand publishes an image13One-click deploy to stagingand production13Logs, metrics and traceslinked from the catalogue8Templates for Go, Kotlin andPython13Preview environment per pullrequest13Progressive rollout withautomatic rollback21Service health scorecard onthe team page8On-call rota and escalationpolicy per service8Ownership review when a teamis dissolved8Incident timeline assembledfrom deploys and alerts13Evidence pack for changemanagement13Dependency and licenceinventory per service8Decommission workflow withdata disposal steps8Deploy from the chat client8no card in M1 — Golden pathNot a walking skeleton — 1 of 4 activities have no card in M1 — Golden path: ComplyStory cards16Estimate168 ptsBackbone4 activitiesReleases4First release spans3/4 · 75%Walking skeleton1 gapFirst release load47 ptsSmallest full sliceno band spansHeaviest releaseM2 — Self-service

Make it your own.

title "Internal developer portal — platform roadmap"
persona "Backend engineer shipping their first service"
goal "Empty repository to production before lunch, without asking anyone"

release "M1 — Golden path"
release "M2 — Self-service"
release "M3 — Governance"

// The backbone follows the service lifecycle, not the team structure.
activity "Scaffold"
  task "Create a service"
    M1: "Template repository with CI already wired up" [8]
    M2: "Templates for Go, Kotlin and Python" [13]
  task "Register ownership"
    M1: "Catalogue entry with an owning team" [5]
    M3: "Ownership review when a team is dissolved" [8]
activity "Ship"
  task "Build and test"
    M1: "Pipeline that builds, tests and publishes an image" [13]
    M2: "Preview environment per pull request" [13]
  task "Deploy"
    M1: "One-click deploy to staging and production" [13]
    M2: "Progressive rollout with automatic rollback" [21]
    later: "Deploy from the chat client" [8]
activity "Operate"
  task "Observe"
    M1: "Logs, metrics and traces linked from the catalogue" [8]
    M2: "Service health scorecard on the team page" [8]
  task "Respond"
    M2: "On-call rota and escalation policy per service" [8]
    M3: "Incident timeline assembled from deploys and alerts" [13]
activity "Comply"
  task "Prove controls"
    M3: "Evidence pack for change management" [13]
    M3: "Dependency and licence inventory per service" [8]
  task "Retire"
    M3: "Decommission workflow with data disposal steps" [8]