Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vernette/tasty
🍗 Платформа для любителей готовки
https://github.com/vernette/tasty
Last synced: 6 days ago
JSON representation
🍗 Платформа для любителей готовки
- Host: GitHub
- URL: https://github.com/vernette/tasty
- Owner: vernette
- Created: 2024-05-20T08:25:31.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-08-21T07:03:54.000Z (5 months ago)
- Last Synced: 2024-11-24T11:15:51.181Z (2 months ago)
- Language: JavaScript
- Homepage:
- Size: 4.87 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Tasty — это сайт для любителей готовить и делиться рецептами. Пользователи могут публиковать свои рецепты, добавлять чужие рецепты в избранное и подписываться на других авторов.
- [Запуск проекта](#запуск-проекта)
- [Возможности проекта](#возможности-проекта)
- [Примеры запросов к API](#примеры-запросов-к-api)
- [Используемые технологии](#используемые-технологии)## Запуск проекта
Клонируйте репозиторий и перейдите в папку с проектом:
```bash
git clone https://github.com/vernette/tasty
cd tasty
```### Вручную
Создайте виртуальное окружение и активируйте его:
```bash
python -m venv venv
source venv/bin/activate
```Установите зависимости:
```bash
pip install -r backend/requirements.txt
```Создайте файл `.env` в корне проекта и внесите свои данные. Для примера можно воспользоваться файлом `.env.example`:
```plaintext
POSTGRES_DB=tasty
POSTGRES_USER=tasty_user
POSTGRES_PASSWORD=tasty_password
DB_HOST=db
DB_PORT=5432
DJANGO_SECRET_KEY=django-insecure-123
DJANGO_DEBUG=False
````DJANGO_SECRET_KEY` можно не заполнять вручную, так он будет сгенерирован автоматически.
Выполните миграции:
```bash
python backend/manage.py migrate
```Запустите проект:
```bash
python backend/manage.py runserver
```### Docker
Перейдите в директорию `infra` и запустите оркестр:
```bash
cd infra
sudo docker compose up
```## Импорт данных
Импортируйте в проект заготовленные данные. Для этого перейдите в директорию `backend/tasty` и выполните команду:
```bash
cd ../backend/tasty
python manage.py import_ingredients_from_csv ../../data/ingredients.csv # Для импорта из csv
python manage.py import_ingredients_from_json ../../data/ingredients.json # Для импорта из json
```## Возможности проекта
### Общая структура
Проект состоит из следующих страниц:
- главная
- страница входа
- страница регистрации
- страница рецепта
- страница пользователя
- страница подписок
- избранное
- список покупок
- создание и редактирование рецепта
- страница смены пароля
- статические страницы «О проекте» и «Технологии».### Страница создания рецепта
Эта страница доступна только для залогиненных пользователей. Все поля на ней обязательны для заполнения.
Также пользователь может отредактировать любой рецепт, который он создал.### Страница списка покупок
Пользователь может скачать свой список покупок в формате `txt` и `pdf`. Ингредиенты из разных рецептов в списке покупок суммируются.
### Разграничение прав пользователей
| Возможности неавторизованных пользователей | Возможности авторизованных пользователей | Возможности администратора |
| ------------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- |
| Просмотр рецептов на главной | Вход в систему под своим логином и паролем | Все права авторизованного пользователя |
| Просмотр отдельных страниц рецептов | Выход из системы | Изменение пароля любого пользователя |
| Просмотр страниц пользователей | Создание, редактирование и удаление собственных рецептов | Создание, блокировка и удаление аккаунтов пользователей |
| Создание аккаунта | Просмотр страниц пользователей | Редактирование и удаление любых рецептов |
| | Просмотр отдельных страниц рецептов | Добавление, удаление и редактирование ингредиентов |
| | Просмотр рецептов на главной | Добавление, удаление и редактирование тегов |
| | Фильтрация рецептов по тегам | |
| | Работа с персональным списком покупок: добавление и удаление любых рецептов, выгрузка файла с количеством необходимых ингредиентов для рецептов из списка покупок | |
| | Работа с персональным списком избранного: добавление в него рецептов или удаление их, просмотр своей страницы избранных рецептов | |
| | Подписка на публикации авторов рецептов и отмена подписки, просмотр своей страницы подписок | |## Примеры запросов к API
### Регистрация пользователя
```http
POST /api/auth/users/
Content-Type: application/json{
"email": "[email protected]",
"username": "vasya.pupkin",
"first_name": "Вася",
"last_name": "Иванов",
"password": "Qwerty123"
}
```### Получение токена
```http
POST /api/auth/token/login/
Content-Type: application/json{
"password": "string",
"email": "string"
}
```### Получение списка рецептов
```http
GET /api/recipes/
```Полная документация доступна по [ссылке](http://localhost/api/docs/).
## Используемые технологии
| Тип | Название |
| ---------- | ---------- |
| Веб-сервер | Nginx |
| Бэкенд | Django |
| Фронтенд | React |
| БД | PostgreSQL |## Автор
- [Никита Скрябин](https://github.com/vernette)