← Назад до портфоліо

Календар зайнятостіПриватний

Календар зайнятості main image

Опис та деталі проекту

Задача

Замовнику потрібен був єдиний календар зайнятості замість розрізнених таблиць і переписки в месенджерах. Менеджери та співробітники повинні бачити зміни, зайнятість і події в одному місці, швидко перемикатися між денним, списковим та погодинним виглядом і не втрачати контекст під час планування на тиждень вперед.

Проект комерційний, закритий (без публічного репозиторію), але типовий для лінійки full-stack веб-додатків і дашбордів: rich UI, форми, фільтри, сповіщення.

Рішення

Зібрано SPA-календар на FullCalendar з кількома режимами відображення (day grid, time grid, list). Навігація та фільтри оформлені через Bootstrap та bootstrap-select, для випадаючих списків з пошуком використано choices.js.

Користувач працює в звичній календарній сітці: drag-and-drop і кліки по слотах, швидкі toast-сповіщення через toastify-js, без перезавантаження сторінки. Дані підготовлюються на клієнті за допомогою lodash (групування, сортування, нормалізація дат).

Архітектура і стек

UI: FullCalendar (core, daygrid, timegrid, list, interaction), Bootstrap 5, кастомні стилі (CSS ~47% кодової бази).

Клієнтська логіка: TypeScript та JavaScript (~50% разом) — типізація моделей подій, обробники календаря, локалізація під UTF-8 (text-encoding-utf-8 для коректної роботи з кирилицею в експорті/імпорті).

Збірка: Vite з vite-plugin-remove-console для production-збірок без зайвого шуму в консолі.

Інтерактивність календаря винесена в окремі модулі: конфіг представлень, єдиний store подій, шар адаптерів під API замовника (контракт не публікується).

Ключові функції

  • Три представлення календаря — день, список, погодинна сітка; перемикання без втрати фільтрів.
  • Фільтри та селекти — bootstrap-select та choices.js для довгих довідників (підрозділи, ролі, типи змін).
  • Зворотний зв'язок — toastify-js для успішного збереження та помилок валідації.
  • Підготовка даних — lodash для агрегації зайнятості за періодами та нормалізації часових поясів на клієнті.
  • Production-ready збірка — видалення console.log, оптимізація бандла під корпоративний хостинг.

Результат

Команда перейшла з ручного планування в таблицях на єдиний календарний інтерфейс. Скоротилося час погодження змін: менеджер бачить перетини та "діри" в графіку відразу в day/time view. Проект завершено (оновлення до грудня 2024) і використовується як внутрішній інструмент.

Що б покращив

Додав би offline-кеш критичних діапазонів дат і e2e-тести на сценарії drag-and-drop в time grid. Для enterprise — аудит-лог змін слотів і SSO через корпоративний IdP.

Часті запитання

Для чого потрібен проєкт «Employment Cal»?

Employment_cal — це динамічний календарний додаток, призначений для спрощення планування та управління зайнятістю, з інтерактивними денними, списковими та часовими переглядами. Використовуючи надійні бібліотеки, такі як FullCalendar та Bootstrap, він забезпечує безшовний користувацький досвід для ефективної організації завдань та подій.

Який стек у «Employment Cal»?

Технології: fullcalendar/core, fullcalendar/daygrid, fullcalendar/interaction, fullcalendar/list, fullcalendar/timegrid, bootstrap, bootstrap-select, choices.js, lodash, text-encoding-utf-8, toastify-js, vite-plugin-remove-console.

Інформація про проект

CommercialCompleted

  • Створено: 04 Sep 2023
  • Оновлено: 16 Dec 2024

Використані технології

fullcalendar/corefullcalendar/daygridfullcalendar/interactionfullcalendar/listfullcalendar/timegridbootstrapbootstrap-selectchoices.jslodashtext-encoding-utf-8toastify-jsvite-plugin-remove-console

Мови

CSS (47.3%)TypeScript (25.5%)JavaScript (24.6%)HTML (2.6%)