The first part of this project was to write the actual software. At its basic level, the software needs to be able to present a grid of options, and perform one or more configurable options whenever an item in the grid is selected. The number of rows and columns should be adjustable, as different users (or even pages for the same user) may use a different number of cells.
This all leads to an object model where you have a collection of pages. Then, each page knows how many rows and columns it has, and hence each page also has a bunch of cells that it "owns." Cells then have to have attributes, like "what picture to display," "text to display", "am I visible/ enabled?" etc. Cells also can have 0 or more actions associated with them. Currently, there are only two action types: "Change to a different page" and "Speak some text." The software is written very generically so that pages and cells can easily have more attributes as the need arises, and I expect many more action types in the future. Consider an action type of triggering a Hue light to turn on or off. Or play a song-- or a movie. Perhaps call someone. Or trigger an If This, Then That recipe. So many possibilities!