Skip to content

Проект BonoAppetito представляет собой веб-приложение, на котором пользователи будут публиковать рецепты, добавлять чужие рецепты в избранное и подписываться на публикации других авторов. 🍲

Notifications You must be signed in to change notification settings

shft1/BonoAppetito

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

70 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BonoAppetito

BonoAppetito workflow


Оглавление


Ссылка на сайт - https://bonoappetito.ru


Описание:

Проект BonoAppetito представляет собой веб-приложение, на котором пользователи будут публиковать рецепты, добавлять чужие рецепты в избранное и подписываться на публикации других авторов. Пользователям сайта также будет доступен сервис «Список покупок». Он позволит создавать список продуктов, которые нужно купить для приготовления выбранных блюд.


Стек технологий:

Python, Django REST Framework, Docker, Docker Compose, Nginx, GitHub Actions (CI/CD), PostgreSQL, SQLite, React


Проект состоит из следующих страниц:

Главная страница

image

Страница входа

image

Страница регистрации

image

Страница рецепта

image

Страница пользователя

image

Страница подписок

image

Избранное

image

Список покупок

image

Собранный список ингредиентов

image

Создание и редактирование рецепта

image

Редактирование рецепта

image

Страница смены пароля

image

Разграничение прав пользователей

В проекте описаны разные уровни доступа пользователей:

  • гость (анонимный пользователь),
  • аутентифицированный (залогиненный) пользователь,
  • администратор.
image

Инструкция по развертыванию:

Клонируйте репозиторий:

git clone git@github.com:shft1/BonoAppetito.git

Cоздайте и активируйте виртуальное окружение:

python3 -m venv venv
  • Если у вас Linux/macOS
    source venv/bin/activate
    
  • Если у вас Windows
    source venv/scripts/activate
    

Установите зависимости из файла requirements.txt:

pip install -r requirements.txt

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

POSTGRES_DB - имя базы данных (если не указать, то БД - SQLite)
POSTGRES_USER - имя пользователя с правами к базе
POSTGRES_PASSWORD - пароль пользователя
DB_HOST - имя контейнера, в котором запущена СУБД
DB_PORT - порт, на котором работает контейнер с СУБД
DJANGO_SECRET_KEY - для секретного ключа
DEBUG - что включения режима отладки значение True/true
ALLOWED_HOSTS - разрешенные хосты

Локальный запуск приложения

Запустите Docker Compose командой:

docker compose -f docker-compose.infra.yml up

В контейнере backend зайдите в терминал:

docker compose -f docker-compose.infra.yml exec -it backend bash

В нем выполните следующие команды

  • python manage.py migrate - выполнить миграции
  • python manage.py collectstatic - сбор статики Django
  • cp -r /app/collected_static/. /backend_static/static/ - копирование в папку
  • filler_ingredients.py - скрипт, для заполнения исходными данными таблицу с ингредиентами

Откройте приложение, обратившись по адресу http://127.0.0.1


Запуск приложения на сервере

  1. Перейдите в settings репозитория BonoAppetito
  2. Перейдите по -> Security -> Secrets and variables -> Actions
  3. Заполните Repository secrets следующим образом:
    - DOCKER_PASSWORD - Ваш пароль от DockerHub
    - DOCKER_USERNAME - Ваше username на DockerHub
    - HOST - IP-адрес вашего удаленного сервера
    - SSH - закрытый SSH-ключ
    - SSH_PASSPHRASE - Пароль от закрытого SSH-ключа
    - USER - Имя пользователя на сервере
    
  4. Сделайте git push в ветку main, чтобы запустить процесс CI/CD

Процесс CI/CD:

При создании git push в ветку main запускается процесс CI/CD, который:

  1. Проверяет backend- и frontend-код линтером и запускает автотесты
  2. После успешной проверки, собирает образы backend, frontend, gateway и пушит их на DockerHub
  3. Подключается по SSH к серверу и выполняет несколько шагов шага:
    • Копирует файл docker-compose.production.yml на сервер
    • Стягивает образы с DockerHub
    • Пересобирает контейнеры из новых образов
    • Собирает статику контейнера backend
  4. Заполните исходными данными таблицу с ингредиентами, для этого, на удаленном сервере, выполните команду:
    docker compose -f docker-compose.production.yml exec backend python filler_ingredients.py

✏️ Автор

Алексей Малков - Ссылка на GitHub

About

Проект BonoAppetito представляет собой веб-приложение, на котором пользователи будут публиковать рецепты, добавлять чужие рецепты в избранное и подписываться на публикации других авторов. 🍲

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published