Официальный веб-сайт премиального караоке-бара и ночного клуба #ГРОМКО (г. Иваново, ул. 10 Августа, 43).
Интерфейс спроектирован в эстетике Dark Neon и следует концептуальному манифесту:
«Музыка → свет → люди → алкоголь → еда → пение → ночь»
| Главный экран (Hero) и Live-статус работы | Недельное расписание и акции |
|---|---|
![]() |
![]() |
| Меню кухни и хиты заведения | Барная карта и авторские коктейли |
|---|---|
![]() |
![]() |
| Асимметричная галерея и Lightbox | Интерактивная бронь столов (Desktop) |
|---|---|
![]() |
![]() |
| Полноэкранный каталог кухни | Барное меню и коктейльная карта |
|---|---|
![]() |
![]() |
| Тёмная интерактивная карта и контакты | Мобильная навигация (Drawer) |
|---|---|
![]() |
![]() |
- Dark Neon палитра: 80% глубокий графит (
#050507,#09090D,#101017) + 20% неоновые акценты (#FF00ACPink,#08CEFDCyan,#7C3CFFViolet) с динамическими радиальными свечениями (glow), стеклянными карточками (glassmorphism) и неоновыми градиентами. - Премиальная типографика:
@fontsource-variable/unboundedдля выразительных клубных заголовков и@fontsource-variable/manropeдля идеальной читаемости текстов. - Адаптивность (Mobile First): Отдельно проработанный UX для мобильных устройств (свайп-карусели, 4-шаговый визард бронирования, плавающая sticky-кнопка CTA, выдвижное меню).
- Hero-секция: Полноэкранный визуальный блок с живым расчетом рабочего статуса (
● ОТКРЫТО СЕЙЧАС/○ ЗАКРЫТО) в зависимости от текущего дня недели и времени. - Neon Marquee: Плавная бегущая неоновая строка между ключевыми блоками.
- «Этой неделей в #ГРОМКО» (Акции и расписание):
- Desktop: 7-колоночный календарь недели (ПН—ВС) с раскрытием программы дня и кнопкой мгновенной брони.
- Mobile: Горизонтальный свайп недели с крупной активной карточкой дня.
- Атмосфера: Манифест-блок с клубными акцентами и ценностями заведения.
- Фотогалерея:
- Desktop: Асимметричный masonry-layout с ритмическими словами
SING,DANCE,DRINK,REPEAT. - Mobile: Touch-карусель со счетчиком слайдов
01 / 08. - Полноэкранный Lightbox: Просмотр фотографий в высоком качестве с клавиатурной навигацией (
Esc,←,→).
- Desktop: Асимметричный masonry-layout с ритмическими словами
- Меню кухни и Барная карта:
- Превью хитов кухни и авторских коктейлей на главной странице.
- Отдельная страница меню (
/menu) с переключением табов[ Кухня ] / [ Бар ]. - Фильтрация по категориям (Закуски, Бургеры, Гриль, Сеты, Салаты, Десерты, Коктейли, Вино, Крепкое и др.) и живой поиск по названию/описанию.
- Верификация возраста (18+): Модальное окно подтверждения возраста при входе в раздел барного меню с сохранением выбора в
localStorage. - Двухрежимная система бронирования:
- Desktop: Интерактивная матрица слотов времени (
Свободно/Занято/Выбрано), выбор даты, селектор количества гостей и мгновенная валидация. - Mobile: 4-шаговый визард (
1. Дата→2. Время→3. Гости→4. Контакты) с индикатором прогресса и кнопкой шага назад. - Модальное окно подтверждения с генерацией уникального номера брони (
GROMKO-XXXXXX).
- Desktop: Интерактивная матрица слотов времени (
- Контакты и Тёмная карта:
- Кастомная темная карта с неоновым маркером локации.
- Быстрые действия: звонок по клику, построение маршрута в Яндекс.Картах, ссылки на Telegram / VK / WhatsApp.
- Политика конфиденциальности (
/privacy): Юридически выверенный документ в соответствии с 152-ФЗ.
| Область | Технологии |
|---|---|
| Frontend | React 19, TypeScript 5.7, Vite 6 |
| Стилизация | Tailwind CSS 3.4, PostCSS, Autoprefixer, clsx, tailwind-merge |
| Иконки и Шрифты | Lucide React, @fontsource-variable/unbounded, @fontsource-variable/manrope |
| Backend API | Node.js (native TypeScript strip-types), Express 4.21, CORS |
| Оптимизация | Modern WebP Images, Zero-dependency lightweight SPA Router |
gromko/
├── public/ # Статические ресурсы и иконки
├── screenshots/ # Скриншоты интерфейса для документации
├── server/
│ └── index.ts # Express REST API сервер
├── src/
│ ├── components/
│ │ ├── atmosphere/ # Манифест-блок атмосферы
│ │ ├── booking/ # Формы бронирования (Desktop + Mobile визард)
│ │ ├── common/ # NeonBadge, NeonButton, Marquee, Modal, AgeVerification
│ │ ├── contacts/ # Контакты и темная карта
│ │ ├── gallery/ # Галерея (Masonry, Carousel, Lightbox)
│ │ ├── hero/ # Главный экран со статусом работы
│ │ ├── layout/ # Header, Footer, StickyMobileCTA
│ │ ├── menu/ # Превью меню кухни и барной карты
│ │ └── schedule/ # Недельное расписание и акции
│ ├── context/
│ │ └── RouterContext.tsx # Клиентский SPA-роутер (главная, меню, политика)
│ ├── data/
│ │ └── mockData.ts # База данных: блюда, бар, расписание, контакты, галерея
│ ├── pages/
│ │ ├── HomePage.tsx # Главная страница
│ │ ├── MenuPage.tsx # Страница полного меню кухни и бара (с фильтрами и 18+)
│ │ └── PrivacyPage.tsx # Страница политики конфиденциальности
│ ├── types/
│ │ └── index.ts # TypeScript типы и интерфейсы
│ ├── App.tsx # Главный компонент приложения и макет
│ ├── index.css # Неоновые стили, кастомные утилиты и анимации
│ └── main.tsx # Точка входа React
├── index.html # HTML-каркас с мета-тегами
├── package.json # Скрипты и зависимости проекта
├── tailwind.config.js # Цветовая палитра и настройки Tailwind
├── tsconfig.json # Конфигурация TypeScript
└── vite.config.ts # Конфигурация Vite и прокси для /api
git clone https://github.com/MistakeTZ/gromko.git
cd gromko
npm install
# или
bun installВ режиме разработки рекомендуется запустить фронтенд и бэкенд параллельно:
# Запуск фронтенда (Vite Dev Server на http://localhost:3000)
npm run dev
# В отдельном терминале: запуск API сервера (Express на http://localhost:3001)
npm run serverПримечание: Vite настроен с автоматическим проксированием запросов
/api/*на порт3001.
# Проверка типов TypeScript и компиляция бандла
npm run build
# Предпросмотр продакшен-сборки
npm run previewБэкенд предоставляет REST API для получения данных и отправки бронирований:
| Метод | Эндпоинт | Описание |
|---|---|---|
GET |
/api/info |
Информация о заведении (адрес, телефон, график, соцсети) |
GET |
/api/promotions |
Расписание акций и событий по дням недели |
GET |
/api/menu |
Полный список блюд кухни с категориями и тегами |
GET |
/api/bar |
Барная карта и коктейли |
GET |
/api/gallery |
Список фотографий и тегов галереи |
GET |
/api/slots?date=YYYY-MM-DD |
Доступность временных слотов для указанной даты |
POST |
/api/booking |
Создание новой брони столика |
{
"date": "2026-09-05",
"time": "21:00",
"guests": 4,
"name": "Александр",
"phone": "+7 (999) 123-45-67",
"comment": "Столик ближе к сцене, день рождения"
}{
"success": true,
"message": "Бронирование успешно подтверждено!",
"data": {
"id": "GROMKO-A9F3K2",
"createdAt": "2026-09-01T18:30:00.000Z",
"date": "2026-09-05",
"time": "21:00",
"guests": 4,
"name": "Александр",
"phone": "+7 (999) 123-45-67",
"comment": "Столик ближе к сцене, день рождения",
"status": "confirmed"
}
}Все ключевые данные, меню, акции и тексты централизованы в одном файле:
👉 src/data/mockData.ts
- Изменение позиций меню: отредактируйте массив
MENU_ITEMS. - Изменение коктейлей и бара: отредактируйте массив
BAR_ITEMS. - Изменение расписания недели и акций: отредактируйте массив
WEEK_SCHEDULE. - Добавление фото в галерею: отредактируйте массив
GALLERY_PHOTOS. - Контакты, режим работы и ссылки на соцсети: отредактируйте объект
VENUE_INFO. - Цветовая палитра и неоновые стили: отредактируйте
tailwind.config.jsиsrc/index.css.
Проект разработан для караоке-бара #ГРОМКО. Все права защищены © 2026.










