Скорость можно определять через SetInterval (смотреть каждый промежуток времени на сколько изменилось смещение курсора и в зависимости от прошлого значения высчитывать вектор скорости).
А само вращение куба - либо threeJS если нужен "реальный" 3D, либо трансформации в CSS
Можно без сохранений в базе и подобного - поставьте зависимость от сегодняшней даты. Смотрите сколько недель прошло от указанного числа и выводите необходимое.
Как-то так:
$weeks = кол-во недель с момента запуска;
print 12*($weeks+1);
недавно ломал себе с этим голову и пока никаких решений не нашел. с динамическим фоном пока нереализуемо (только если конечно весь контент не будет фоновым канвасом и его уже частично размывать).
а на статике все просто (прямоугольники при наведении на темном фоне)