Powodzenia!
Siatka kalendarza jest najtrudniejszą częścią — zanim zaczniesz kodować, zrozum jak działa getDay() i dlaczego europejski tydzień zaczyna się od poniedziałka (a nie niedzieli jak w JS domyślnie). Formuła (firstDay.getDay() + 6) % 7 rozwiązuje ten problem!