If I understand it right, you are sending the timezone info back to the server? If so, why does the server need to know at all? Just use that info to set the background of the 'today' calendar cell in the client side.
To determine which range of dates gets shown and to calculate the number of days in your current streak. I guess could do the latter on the client, but what if it's Aug 31st in CA and Sept 1st in MA and the user is in month view? I'm not yet ready to go all js.