Skip to content

Техническое задание

Bryanskaya edited this page Mar 14, 2022 · 15 revisions

Кулинарный сайт, представляющий платформу для сообщества авторов самых разных рецептов. Он должен позволять свободно публиковать собственные рецепты в подробной и удобной для восприятия форме: с выделением нужных ингредиентов, шагов приготовления с подробными комментариями и иллюстрациями. Для тех, кто ищет вдохновения у других авторов должна быть возможность легко найти рецепт по названию, ингредиентам или по любимому автору. Для продвижения понравившегося контента и поддержки автора, предусматривается наличие лайков, которые может поставить любой зарегистрированный пользователь. В целях поддержания порядка на сайте должна существовать роль администратора, способного удалять недопустимые рецепты.

Функциональные требования

  • Создание и просмотр рецептов
  • Профиль пользователя
  • Система оценивания
  • Поиск по названию, тегу, автору

Ключевые роли

  1. неавторизованный пользователь
  2. авторизованный пользователь
  3. администратор

Функциональные возможности

0. пользователь любой категории

  1. просмотреть профиль какого-либо автора
  2. просмотреть рецепты
  3. осуществить поиск по названию/тегу/автору

1. неавторизованный пользователь

  1. зарегистрироваться

2. авторизованный пользователь

  1. войти/выйти в/из систему/ы
  2. просмотреть свои рецепты
  3. просмотреть рецепты, которые были им оценены
  4. поставить/убрать оценку (лайк) рецепту
  5. добавить/удалить свой рецепт

3. администратор

  1. весь функционал авторизованного пользователя
  2. удалить рецепт любого автора
  3. изменить роль пользователя (авторизованного пользователя до администратора и наоборот)

Детали создания рецепта

Общий формат:

  • название
  • указание продолжительности (в любых единицах: минуты/часы и т.д.)
  • указание количества порций
  • комментарий к рецепту (необязательное к заполнению поле)
  • перечень ингредиентов (единицы: гр/кг/мл/л и т.д.)
  • шаги приготовления
  • фото/картинка

Детали реализации

  • Ввиду планируемого большого количества контента, должна быть использована "ленивая" загрузка рецептов на веб-сайт.

Окружение

  • Браузер Google Chrome (версия 99)

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

  • PostgreSQL
  • Go (gorm, gorilla)
  • Swagger
  • Nginx
  • Docker
  • React
  • Hamachi

Оборудование

  • Raspberry Pi 2B (сервер и БД)