Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/curiousgecko/foodgram-project-react
Foodgram - отличный сервис для любителей покушать.
https://github.com/curiousgecko/foodgram-project-react
bash django django-rest-framework djoser docker-compose gunicorn oops-in-python python3 workflow
Last synced: about 1 month ago
JSON representation
Foodgram - отличный сервис для любителей покушать.
- Host: GitHub
- URL: https://github.com/curiousgecko/foodgram-project-react
- Owner: CuriousGecko
- Created: 2023-12-09T15:00:14.000Z (about 1 year ago)
- Default Branch: master
- Last Pushed: 2024-02-01T15:11:10.000Z (about 1 year ago)
- Last Synced: 2024-11-11T07:34:31.794Z (3 months ago)
- Topics: bash, django, django-rest-framework, djoser, docker-compose, gunicorn, oops-in-python, python3, workflow
- Language: JavaScript
- Homepage:
- Size: 1.09 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
## Foodgram - отличный сервис для любителей покушать.
##### Возможности сервиса:
- Создание, просмотр, редактирование и удаление рецептов.
- Добавление рецептов в избранное.
- Формирование списка покупок.#### Развертывание проекта локально (для разработки):
1. Установите Docker и Docker-compose. Запустите сервис Docker.
2. Склонируйте репозиторий на свой компьютер:
```bash
git clone [email protected]:CuriousGecko/foodgram-project-react.git
``````bash
cd foodgram-project-react/for_devs/
```3. Наполните файл env.dev своими данными.
4. Перейдите в директорию:
```bash
cd ../infra/
```5. Запустите проект:
```bash
sudo docker compose -f docker-compose-local.yml up
```6. Выполните миграции:
```bash
sudo docker exec foodgram-back python manage.py migrate
```7. Соберите статические файлы бэкенда:
```bash
sudo docker exec foodgram-back python manage.py collectstatic
```8. Создайте суперпользователя:
```bash
sudo docker exec -it foodgram-back python manage.py createsuperuser
```9. Загрузите данные в базу (опционально):
```bash
sudo docker exec foodgram-back python manage.py load_elements_from_json --file_path ./data_for_load/ingredients.json --model_name Ingredient --app_name ingredients
``````bash
sudo docker exec foodgram-back python manage.py load_elements_from_json --file_path ./data_for_load/tags.json --model_name Tag --app_name tags
```#### Автоматический деплой проекта на удаленном сервере:
1. Файл workflow уже написан. Рекомендуется внимательно изучить содержимое. Файл находится в директории:
```bash
foodgram-project-react/.github/workflows/main.yml
```2. В GitHub Actions необходимо добавить следующие секреты (для полей БД можно взять в качестве образца файл /foodgram-project-react/for_devs/env.dev):
```bash
DOCKER_USERNAME # имя пользователя в DockerHub
DOCKER_PASSWORD # пароль пользователя в DockerHubHOST # IP-адрес сервера
USER # имя пользователя
SSH_KEY # приватный ssh-ключ (cat ~/.ssh/id_rsa)
SSH_PASSPHRASE # кодовая фраза (пароль) для ssh-ключа
DB_ENGINE # какой движок будет использовать Django для БД
DB_USER # пользователь БД
DB_PASSWORD # пароль пользователя БД
DB_NAME # название БД
DB_HOST # к какому контейнеру подключаемся
DB_PORT # порт БД
POSTGRES_USER # == DB_USER
POSTGRES_PASSWORD # == DB_PASSWORD
POSTGRES_DB # == DB_NAME
SERVER_NAME # домен вашего проекта и\или IP-адрес сервера
NGINX_EXTERNAL_PORT # какой внешний порт будет слушать контейнер NginxTELEGRAM_TO # id телеграм-аккаунта (можно узнать у @userinfobot, команда /start)
TELEGRAM_TOKEN # токен бота (получить токен можно у @BotFather, /token, имя бота)
```3. Опционально: измените данные для создания суперпользователя в скрипте deploy_data.sh в директории foodgram/infra удаленного сервера и запустите его. Будут применены миграции, БД наполнится стартовыми данными, создастся суперпользователь.
### Запросы к API
Теперь вы можете отправлять запросы к api, например, создать пользователя. Пример POST-запроса к api/users/:
```
{
"email": "[email protected]",
"username": "user",
"password": "user_password",
"first_name": "user_first_name",
"last_name": "user_last_name"
}
```Вся документация по API доступна по адресу api/docs/redoc.html
### Технология
Проект разработан на базе Django REST framework, аутентификация настроена с помощью Djoser + SimpleJWT.
Полный список библиотек в файле backend/requirements.txt.API разработан: Леонид Цыбульский