CASE STUDY CALENDAR ENGINE
Wróć do portfolio
> DOWÓD UMIEJĘTNOŚCI // LEKKI SILNIK REZERWACJI

Jak napisałem wydajny widget rezerwacji bez obciążających bibliotek

Większość platform i wdrożeń rezerwacyjnych (np. WordPress, wtyczki SaaS, gotowe biblioteki) importuje setki kilobajtów niepotrzebnego kodu JS. Spowalnia to czas pełnej interakcji urządzenia mobilnego (TBT) o cenne sekundy.

Poniższy komponent rezerwacji (spa/fryzjer) powstał w **czystym Vanilla JS** i waży zaledwie **2.9 KB**. To demonstracja tego, jak precyzyjne pisanie kodu od zera eliminuje narzut frameworków, dając natychmiastowe ładowanie (100/100 PageSpeed) i płynność działania na każdym smartfonie.

Architektura i optymalizacje:

Czysty JavaScript (2.9 KB) Size

Zamiast ładować masywne pakiety kalendarzowe (typu FullCalendar czy jQuery), napisałem autorski generator dni i godzin. Przeglądarka pobiera tylko niezbędne bajty logiczne.

DOM Patching Performance

Każda akcja użytkownika aktualizuje centralny obiekt stanu w pamięci, a następnie wybiórczo aktualizuje tylko zmienione węzły DOM. Zapobiega to kosztownemu ponownemu renderowaniu całej strony.

Mobile First (UX) Design

Ponad 80% ruchu w usługach lokalnych pochodzi z urządzeń mobilnych. Interfejs został zoptymalizowany pod kątem ekranów dotykowych – duże obszary kliknięć, zero zbędnych pól formularzy i wysoka czytelność.

Zero Zależności Zewnętrznych Clean Code

Komponent działa w pełni samodzielnie. Nie wymaga frameworków CSS ani JS, co gwarantuje pełną stabilność, brak podatności na błędy bibliotek firm trzecich i błyskawiczny czas parsowania skryptów.

Podgląd kodu źródłowego:

Jakub's Engine Source
/* Generowanie siatki kalendarza */
function generateCalendar(month, year) {
  const daysInMonth = new Date(year, month + 1, 0).getDate();
  const startDay = new Date(year, month, 1).getDay();
  let grid = [];
  
  for(let i = 0; i < startDay; i++) {
    grid.push(null);
  }
  for(let d = 1; d <= daysInMonth; d++) {
    grid.push(new Date(year, month, d));
  }
  return grid;
}