Skip to content

Chapirka69/booking

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 

Repository files navigation

Документация проекта "Система бронирования"

Содержание

  1. Общее описание
  2. Архитектура проекта
  3. Технологический стек
  4. Функциональность
  5. API Endpoints
  6. База данных
  7. Безопасность
  8. Развертывание

Общее описание

Система бронирования представляет собой полнофункциональное веб-приложение, позволяющее пользователям бронировать отели, кафе и рестораны. Система имеет два уровня доступа: обычный пользователь и администратор.

Основные возможности

  • Регистрация и авторизация пользователей
  • Бронирование отелей
  • Управление бронированиями
  • Административная панель

Архитектура проекта

Общая структура

booking/
├── front/                 # Frontend приложение
│   ├── src/
│   │   ├── components/   # React компоненты
│   │   ├── Layout/       # Компоненты макета
│   │   ├── assets/       # Статические ресурсы
│   └── public/           # Публичные файлы
│
└── back/                 # Backend приложение
    ├── src/             # Исходный код сервера
    ├── migrations/      # Миграции базы данных
    └── prisma/         # Схема и конфигурация Prisma

Архитектурные принципы

  • Клиент-серверная архитектура
  • RESTful API
  • Модульная структура
  • Разделение ответственности
  • Масштабируемость

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

Frontend

  • React.js - Основной фреймворк
  • Material-UI - UI компоненты
  • React Router - Маршрутизация
  • Axios - HTTP клиент
  • Redux/Context API - Управление состоянием

Backend

  • Node.js - Серверная платформа
  • Express.js - Веб-фреймворк
  • Prisma ORM - Работа с базой данных
  • PostgreSQL - База данных
  • JWT - Аутентификация
  • Bcrypt - Хеширование паролей

Инструменты разработки

  • Git - Контроль версий
  • Prettier - Форматирование кода

Функциональность

Пользовательские функции

  1. Аутентификация

    • Регистрация
    • Вход
    • Управление бронями
  2. Бронирование

    • Поиск отелей и заведений
    • Просмотр деталей
    • Создание бронирования
    • Управление бронированиями
  3. Профиль

    • Личная информация

Административные функции

  1. Управление контентом

    • Добавление/редактирование отелей и заведений
    • Управление заведениями
    • Настройка цен и доступности
  2. Аналитика

    • Статистика бронирований
    • Отчеты по использованию
    • Мониторинг активности

API Endpoints

Аутентификация

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

Установка

  1. Клонирование репозитория git clone https://github.com/your-repo/booking.git cd pc-configurator
  2. Установка зависимостей
  3. Настройка переменных окружения
  4. Миграция базы данных
  5. Запуск приложения

Переменные окружения

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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages