Files
2026-06-08 14:36:51 +07:00

74 lines
4.4 KiB
Markdown

# 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-пакеты:
```bash
npm install
```
### Шаг 2. Настройка базы данных
Убедитесь, что у вас запущен локальный или удаленный PostgreSQL.
Откройте файл `server/.env` и пропишите актуальные реквизиты доступа к вашей СУБД:
```env
# Формат: postgresql://[USER]:[PASSWORD]@[HOST]:[PORT]/[DATABASE]
DATABASE_URL=postgresql://postgres:password@localhost:5432/harats_booking
```
### Шаг 3. Инициализация базы данных
Если вы запускаете проект впервые на чистой базе, вам нужно создать таблицы и заполнить их тестовыми данными. Для этого выполните скрипт инициализации:
```bash
npm run db:init
```
> **Что делает эта команда?**
> - Применяет структуру таблиц Prisma к вашей базе данных (`npm run db:migrate`).
> - Заполняет БД категориями, меню (40+ позиций), планом столов, актуальными бизнес-ланчами и демо-пользователями (`npm run db:seed`).
### Шаг 4. Запуск серверов разработчика
Для одновременного запуска Backend-сервера и Frontend-приложения используйте всего одну команду в корне:
```bash
npm run dev
```
> **Доступ:**
> - Клиентское приложение: http://localhost:5173
> - API Сервер: http://localhost:3001
---
## 🔑 Тестовые аккаунты
База предзаполняется двумя типами пользователей для тестирования.
Пароль для обоих аккаунтов одинаковый: `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 для прямого управления записями БД в браузере.