Scrum as a typescript documentation

The Scrum framework provides a set of methods and events that enable teams to collaborate effectively and deliver high-quality software. It also defines a set of roles with corresponding properties and types to carry out the work of the project.

The following post is an attempt to simplify the explanation of the framework in a documentation style.


  • Sprint(planning: SprintPlanning): Promise<SprintResult>: A time-boxed iteration during which the team works to deliver a potentially shippable product increment.
  • SprintPlanning(backlog: ProductBacklog, sprintGoal: string): Promise<SprintPlan>: A collaborative meeting during which the team plans the work to be done during the upcoming sprint.
  • DailyScrum(yesterdayProgress: string[], todayPlan: string[]): Promise<void>: A daily meeting in which the team synchronizes their work and identifies any impediments that are blocking progress.
  • SprintReview(increment: ProductIncrement, feedback: StakeholderFeedback[]): Promise<void>: A meeting at the end of the sprint during which the team demonstrates the product increment and receives feedback from stakeholders.
  • SprintRetrospective(outcomes: SprintOutcomes): Promise<void>: A meeting at the end of the sprint during which the team reflects on their process and identifies areas for improvement.


  • onSprintStarted: EventEmitter<Sprint>: Event emitted when a new sprint is started.
  • onSprintEnded: EventEmitter<SprintResult>: Event emitted when a sprint is completed.
  • onProductBacklogChanged: EventEmitter<ProductBacklog>: Event emitted when the product backlog is updated.
  • onIncrementUpdated: EventEmitter<ProductIncrement>: Event emitted when a product increment is updated.
  • onSprintOutcomesUpdated: EventEmitter<SprintOutcomes>: Event emitted when sprint outcomes are updated.


  • ProductOwner { name: string, role: ‘productOwner’ }: The person responsible for maximizing the value of the product and for ensuring that the team is building the right thing.
  • ScrumMaster { name: string, role: ‘scrumMaster’ }: The person responsible for ensuring that the team is following the Scrum framework and for facilitating the Scrum events.
  • DevelopmentTeam { members: Employee[], role: ‘developmentTeam’ }: The group of people responsible for developing the product increment.


To read more articles written by me: