2026-06-08 15:50:38 +07:00

Harat's Pub Booking System

Полностековое веб-приложение для бронирования столов и оформления предзаказов в сети ирландских пабов Harat's.

🛠 Технологический стек

  • Архитектура: Monorepo (npm workspaces)
  • Frontend (Client): React 19, TypeScript, Vite, Zustand, TanStack Query, React-Konva (для интерактивной карты заведения)
  • Backend (Server): Node.js, Express, TypeScript, Zod (валидация)
  • База данных: PostgreSQL 16
  • ORM: Prisma
  • Авторизация: JWT (Access + Refresh tokens), хэширование bcrypt

🚀 Инструкция по локальному запуску

Для развертывания проекта на локальной машине с операционной системой (например, под управлением Ubuntu или Windows) потребуется установленный Node.js (v18+) и сервер PostgreSQL.

Шаг 1. Установка зависимостей

Откройте терминал в корневой директории проекта и установите все npm-пакеты:

npm install

Шаг 2. Настройка базы данных

Убедитесь, что у вас запущен локальный или удаленный PostgreSQL. Откройте файл server/.env и пропишите актуальные реквизиты доступа к вашей СУБД:

# Формат: postgresql://[USER]:[PASSWORD]@[HOST]:[PORT]/[DATABASE]
DATABASE_URL=postgresql://postgres:password@localhost:5432/harats_booking

Шаг 3. Инициализация базы данных

Если вы запускаете проект впервые на чистой базе, вам нужно создать таблицы и заполнить их тестовыми данными. Для этого выполните скрипт инициализации:

npm run db:init

Что делает эта команда?

  • Применяет структуру таблиц Prisma к вашей базе данных (npm run db:migrate).
  • Заполняет БД категориями, меню (40+ позиций), планом столов, актуальными бизнес-ланчами и демо-пользователями (npm run db:seed).

Шаг 4. Запуск серверов разработчика

Для одновременного запуска Backend-сервера и Frontend-приложения используйте всего одну команду в корне:

npm run dev

Доступ:


🔑 Тестовые аккаунты

База предзаполняется двумя типами пользователей для тестирования. Пароль для обоих аккаунтов одинаковый: admin123 и user123 (соответственно роли).

Роль Телефон Пароль Доступ
Администратор +79001234567 admin123 Права просмотра и редактирования в панели /admin
Пользователь +79009876543 user123 Тестовый аккаунт гостя для проверки бронирования

🏗 Дополнительные команды

Все скрипты выполняются из корневой директории проекта:

  • npm run build — Собрать проект для Production (сначала собирается пакет shared, затем client и server).
  • npm run dev:client — Запустить только React-приложение фронтенда.
  • npm run dev:server — Запустить только Express-сервер бэкенда.
  • npm run db:reset — Полностью сбросить и удалить старую базу данных, пересоздав её заново.
  • npm run db:studio (из папки server) — Открыть веб-интерфейс Prisma для прямого управления записями БД в браузере.
S
Description
No description provided
Readme 168 KiB
Languages
TypeScript 81.8%
CSS 10.1%
PowerShell 4.5%
Shell 1.6%
Dockerfile 1.1%
Other 0.9%