Some direction for aquarium controller

A few months ago, I decided that I would make a simple LED light fixture for my aquarium with some 3W star LEDs and a few heatsinks. Then I thought I might add an Arduino with an RTC to turn it on and off at certain times of day... fast forward a few months, and I'm designing a GUI controlled aquarium controller with automatic fert dosing, and temperature sensor + heater with an Arduino mega. :grinning: I have researched a bit, and found similar projects with GUI's, but they weren't super great, and seemed very time consuming, as you had to hard-code every button, guage, etc. After a little thinking, I came up with the idea of creating a GUI library for Arduino, to take control of button presses, menus, etc. Would it be reasonable to create a library which would take care of all the low-level stuff? I've seen a few GUI libraries for Arduino, but they weren't what I was looking for. I'm not a newbie to programming, but I also wouldn't call myself an expert either, so this is what I'm thinking of:

/*
 char title[] = "Title";
 char btn1_txt[] = "Button 1";

 page1_btns[] = {btn1, btn2, .....

 GUIbutton btn1(uint8_t color, uint8_t btn_index, char &text, &page);
 
 -------------------------------------------------------------------------
 uint8_t color:  Color of button in 565 format
 uint8_t index:  Index number of button (button #1 in top-left corner)
 char &text:  Text to display on button
 &page:  Page object to display when button is pressed
 -------------------------------------------------------------------------
 
                
 GUIpage page1(uint8_t &page1_btns, uint8_t rotation, char &title);
 
 -------------------------------------------------------------------------
 uint8_t &page_btns:  Buttons to show on screen
 uint8_t rotation:  Rotation of the screen
 char *title:  Title of the page displayed
 -------------------------------------------------------------------------
 
     GUI page sketch
 
 |------------------------------|
 | HOME |    title              |
 |------|    -------------------|
 |                              |
 |  btn1    btn2     btn3       |
 |                              |
 |  btn4    btn5                |
 |                              |
 |------------------------------|
 
 */

I apologize if I'm not very clear, but my main idea is to try to make a library that makes designing a GUI easier without hard-coding every aspect of the GUI.

Sounds like an excellent idea. Is this for a graphical touch-screen or a text LCD with navigation buttons or what?

I had in mind a touchscreen TFT, but I guess it would be helpful for character LCDs also. While researching, I found a library very similar to what I was looking for here. Has anyone tried this one out? It looks like it packs quite a punch.