\chapter{Using the Framework} In this section I am going to dive into further detail on how client code is supposed to use the framework, some of the design decisions behind this and how all all of this is integrated into the \texttt{solvable} Docker image. To use the framework one has to do several things to get started. The main poins include: \begin{itemize} \item define an FSM describing the flow of the tutorial \item implement required event handlers (that might trigger state transitions in the FSM, interact with non-TFW code and do various things that might be needed during a challenge) \item define what processes should be running inside the container besides the TFW server (which is started automatically) \item set up reverse proxying for any user-facing network applications such as webservers, SSH and friends \end{itemize} At first all these tasks are quite overwhelming. Remember that witchcraft is what we practice here after all. To overcome the high initial learning curve of getting familiar with the framework I have created a repository called \emph{test-tutorial-framework} with the purpose of providing a project template for developers looking to create challenges using the framework. This repository is a really simple client codebase that is suitable for developing TFW itself as well (a good place to tests for the framework). Let us take a look at this to acquire a greater understanding of how the framework operates. \section{Project Structure}