The functions / classes you use could be in a plugin for portability, or just on the page or in your functions.php file for ease, whatever you like.
The nice thing about building like this for me is that the journey from nothing to something is short and so much is supported out of the box.