← Назад к портфолио

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

Календарь занятости 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. Языки кодовой базы: CSS (47.3%), TypeScript (25.5%), JavaScript (24.6%), HTML (2.6%).

Почему «Employment Cal» без публичного репозитория?

Это закрытый коммерческий проект: исходники не опубликованы, но на странице описаны архитектура, функции и принятые решения.

Информация о проекте

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%)