The JETSCAPE simulation framework is an overarching computational envelope for developing complete event generators for heavy-ion collisions. It allows for modular incorporation of a wide variety of existing and future software that simulates different aspects of a heavy-ion collision. The default JETSCAPE package contains both the framework, and an entire set of indigenous and third party routines that can be used to directly compare with experimental data. In this article, we outline the algorithmic design of the JETSCAPE framework, define the interfaces and describe the default modules required to carry out full simulations of heavy-ion collisions within this package. We begin with a description of the various physics elements required to simulate an entire event in a heavy-ion collision, and distribute these within a flowchart representing the event generator and statistical routines for comparison with data. This is followed by a description of the abstract class structure, with associated members and functions required for this flowchart to work. We then define the interface that will be required for external users of JETSCAPE to incorporate their code within this framework and to modify existing elements within the default distribution. We conclude with a discussion of some of the physics output for both $p$-$p$ and $A$-$A$ collisions from the default distribution, and an outlook towards future releases. In the appendix, we discuss various architectures on which this code can be run and outline our benchmarks on similar hardware.