This was programmed using the Twine framework in Visual Studio Code. The Twine framework for this project is just fancy HTML.
If you don't want to go whole hog into the programming world, you can download and/or use the Twiney web app here!
The default StoryFormat for Twine is Harlowe, but for this story I used Sophie's WritingFantasy. I didn't want to be fancy with the interactivity, so I thought it was perfect for me.
I'm also part of the Twine Games Discord, which is very inviting and helpful to newcomers. If you have Discord and you're interested, you can check it out here!
As for how you can make something like this? With lots of time and effort!