74 lines
4.4 KiB
Markdown
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 для прямого управления записями БД в браузере.
|