- Общее описание
- Архитектура проекта
- Технологический стек
- Функциональность
- API Endpoints
- База данных
- Безопасность
- Развертывание
Система бронирования представляет собой полнофункциональное веб-приложение, позволяющее пользователям бронировать отели, кафе и рестораны. Система имеет два уровня доступа: обычный пользователь и администратор.
- Регистрация и авторизация пользователей
- Бронирование отелей
- Управление бронированиями
- Административная панель
booking/
├── front/ # Frontend приложение
│ ├── src/
│ │ ├── components/ # React компоненты
│ │ ├── Layout/ # Компоненты макета
│ │ ├── assets/ # Статические ресурсы
│ └── public/ # Публичные файлы
│
└── back/ # Backend приложение
├── src/ # Исходный код сервера
├── migrations/ # Миграции базы данных
└── prisma/ # Схема и конфигурация Prisma
- Клиент-серверная архитектура
- RESTful API
- Модульная структура
- Разделение ответственности
- Масштабируемость
- React.js - Основной фреймворк
- Material-UI - UI компоненты
- React Router - Маршрутизация
- Axios - HTTP клиент
- Redux/Context API - Управление состоянием
- Node.js - Серверная платформа
- Express.js - Веб-фреймворк
- Prisma ORM - Работа с базой данных
- PostgreSQL - База данных
- JWT - Аутентификация
- Bcrypt - Хеширование паролей
- Git - Контроль версий
- Prettier - Форматирование кода
-
Аутентификация
- Регистрация
- Вход
- Управление бронями
-
Бронирование
- Поиск отелей и заведений
- Просмотр деталей
- Создание бронирования
- Управление бронированиями
-
Профиль
- Личная информация
-
Управление контентом
- Добавление/редактирование отелей и заведений
- Управление заведениями
- Настройка цен и доступности
-
Аналитика
- Статистика бронирований
- Отчеты по использованию
- Мониторинг активности
POST /api/register - Регистрация
POST /api/login - Вход
GET /api/me - Данные пользователя
GET /api/hotels - Список отелей
GET /api/hotels/:id - Детали отеля
POST /api/hotels - Создание отеля (админ)
PUT /api/hotels/:id - Обновление отеля (админ)
GET /api/cafes - Список заведений
GET /api/cafes/:id - Детали заведения
POST /api/cafes - Создание заведения (админ)
PUT /api/cafes/:id - Обновление заведения (админ)
GET /api/bookings - Список бронирований
POST /api/bookings - Создание бронирования
PUT /api/bookings/:id - Обновление бронирования
DELETE /api/bookings/:id - Отмена бронирования
model User {
id Int @id @default(autoincrement())
email String @unique
password String
name String
role String @default("USER")
bookings Booking[]
}
model Hotel {
id Int @id @default(autoincrement())
name String
location String
description String
price Float
imageUrl String?
rating Float?
rooms Room[]
bookings Booking[]
}
model CafeRestaurant {
id Int @id @default(autoincrement())
name String
location String
description String
type String
rating Float?
imageUrl String?
amenities String[]
}
model Booking {
id Int @id @default(autoincrement())
userId Int
hotelId Int?
cafeId Int?
date DateTime
status String
user User @relation(fields: [userId], references: [id])
hotel Hotel? @relation(fields: [hotelId], references: [id])
cafe CafeRestaurant? @relation(fields: [cafeId], references: [id])
}- JWT токены
- Хеширование паролей (bcrypt)
- Проверка ролей
- Валидация входных данных
- Node.js 14+
- PostgreSQL 12+
- npm или yarn
- Клонирование репозитория git clone https://github.com/your-repo/booking.git cd pc-configurator
- Установка зависимостей
- Настройка переменных окружения
- Миграция базы данных
- Запуск приложения
DATABASE_URL="postgresql://user:password@localhost:5432/database"
JWT_SECRET="your-secret-key"
PORT=5000# Backend
cd back
npm install
npm run dev
# Frontend
cd front
npm install
npm run dev
# Frontend
cd front
npx prisma migrate dev --name init
npx prisma studio