Skip to content

mbur17/travelhub_app

Repository files navigation

TravelHub

Платформа для обмена путевыми заметками и рекомендациями путешествий

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

  • Регистрация и аутентификация — надежная система управления учетными записями
  • Публикация статей о путешествиях — с изображениями, описанием посещаемых мест и категориями
  • Подписка на авторов — следите за любимыми путешественниками
  • Система закладок — сохраняйте интересующие вас статьи
  • Каталог мест назначения — более 125 популярных мест по всему миру
  • Категоризация контента — фильтрация статей по темам и местам
  • План путешествия — создавайте и управляйте личным списком планируемых поездок

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

Компонент Технология
Backend Python, Django, Django REST Framework
Аутентификация Djoser (Token-based)
База данных PostgreSQL
Frontend React.js
Контейнеризация Docker, Docker Compose
Веб-сервер Nginx
CI/CD GitHub Actions

Установка и запуск

Требования

  • Docker и Docker Compose
  • Git

1. Клонирование репозитория

git clone https://github.com/mbur17/travelhub.git
cd travelhub

2. Конфигурация окружения

Создайте файл .env в корневой директории проекта:

# PostgreSQL
POSTGRES_DB=travelhub_db
POSTGRES_USER=travelhub_user
POSTGRES_PASSWORD=secure_password_here
DB_NAME=travelhub_db
DB_HOST=db
DB_PORT=5432

# Django
SECRET_KEY=your-super-secret-django-key-change-this-in-production
DEBUG=False
ALLOWED_HOSTS=localhost,127.0.0.1,yourdomain.com
CSRF_TRUSTED_ORIGINS=https://yourdomain.com,http://localhost

# Email (опционально)
EMAIL_BACKEND=django.core.mail.backends.console.EmailBackend

3. Запуск с Docker

# Сборка и запуск контейнеров
docker-compose up -d --build

# Выполнение миграций
docker-compose exec backend python manage.py migrate

# Создание суперпользователя для админ-панели
docker-compose exec backend python manage.py createsuperuser

# Загрузка данных о местах назначения
docker-compose exec backend python manage.py load_destinations

# Сбор статических файлов
docker-compose exec backend python manage.py collectstatic --noinput

4 Доступ к приложению

Локальная разработка

Без Docker

# Создание виртуального окружения
python -m venv venv
source venv/bin/activate  # Для Windows: venv\Scripts\activate

# Установка зависимостей
pip install -r backend/requirements.txt

# Миграции БД
cd backend
python manage.py migrate

# Запуск сервера разработки
python manage.py runserver

# В другом терминале запустите frontend
cd frontend
npm install
npm start

Структура проекта

travelhub/
├── backend/                 # Django приложение
│   ├── api/                # REST API endpoints
│   │   ├── recipes/        # Endpoints для статей
│   │   └── users/          # Endpoints для пользователей
│   ├── recipes/            # Основные модели (Article, Category, Destination)
│   ├── users/              # Модели пользователей
│   └── manage.py
├── frontend/               # React приложение
│   └── src/
│       ├── components/     # React компоненты
│       ├── pages/          # Страницы приложения
│       └── api/            # Вызовы API
├── infra/                  # Nginx конфигурация
│   └── nginx.conf
├── data/                   # Данные для загрузки
│   └── destinations.json   # 125+ мест назначения
└── docker-compose.yml

API Endpoints

Статьи о путешествиях

  • GET /api/articles/ — список всех статей
  • POST /api/articles/ — создание новой статьи
  • GET /api/articles/{id}/ — деталь статьи
  • PATCH /api/articles/{id}/ — обновление статьи
  • DELETE /api/articles/{id}/ — удаление статьи

Категории

  • GET /api/categories/ — список категорий
  • POST /api/categories/ — создание категории

Места назначения

  • GET /api/destinations/ — список всех мест
  • GET /api/destinations/{id}/ — деталь места

Пользователи

  • POST /api/auth/token/login/ — вход в систему
  • POST /api/auth/token/logout/ — выход из системы
  • GET /api/users/ — список пользователей
  • GET /api/users/me/ — профиль текущего пользователя

Подписки

  • GET /api/users/{id}/subscribe/ — подписаться на пользователя
  • GET /api/users/subscriptions/ — список подписок

Закладки и планы

  • GET /api/articles/{id}/bookmark/ — добавить в закладки
  • GET /api/articles/{id}/plan/ — добавить в план путешествия

About

Платформа для обмена путевыми заметками и рекомендациями путешествий

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors