Blynk Thermostat using the ESP32 + BME680,MCP23017,DS13017,ST7735

I am currently working on a new thermostat for my flat. I tried to boost it with hardware that allows me to go as far as possible for this project. This is my way of learning programming :D.

It is fully working, but it is still in the early stage. Some data is stored in the EEPROM, but there is currently no menu yet.

The hardware used:

ESP32 Dev Board
I2C BME680
I2C MCP23017
I2C RTC DS13017z
SPI ST7735
433 Mhz transmitter
433 Mhz Relay Module

All the I2C hardware is using the same hardware I2C port on the esp32.

The ESP32 works using the Blynk Platform and it displays the data on ST7735 using the UCGLIB.
The IO pins are extended using the I2c MCP23017 giving the chance to add enough buttons. It uses the Adafruit Library:
The offline time kept by an external I2C RTC DS13017z using a library that does not conflict with the Online RTC used by Blynk:

Feel free to give me advice.

I am looking for an algorithm that allows me to tell the week nr in the year so I cover the weekly rotating shifts.

Trying to find the best way of creating the menu/submenu for setting up the time, mode, time interval,