Skip to content

Test task for "Introduction to Database Management Systems" discipline

License

Notifications You must be signed in to change notification settings

Eevangelion/DBMS_TASK

Repository files navigation

DBMS_TASK

Тестовое задание для дисциплин "Введение в системы баз данных" и "Технологии Интернет и Web-программирования"

Описание

Урезанный аналог Reddit, направленный на публикацию шуток/анекдотов.

Наименование

FunnyJokes

Предметная область, данные

Шутки, анекдоты

Данные и их ограничения

https://drawsql.app/teams/test-team-30/diagrams/jokesdiagram

Общие ограничения целостности

  • Тэги могут добавлять в базу данных/удалять из базы данных только администраторы
  • Каждый пользователь может добавлять шутки только в своё избранное
  • Рейтинг - неотрицательное целое число

Пользовательские роли

  • Администратор
  • Пользователь
  • Неавторизированный пользователь

Для каждой роли - наименование, ответственность, количество пользователей в этой роли?

  • Администратор - рассматривает жалобы пользователей посредством интерфейса на своей странице. Может добавлять новые тэги и блокировать пользователей (заблокированные пользователи не смогут публиковать свои шутки на протяжении 7 дней с начала бана)
  • Пользователь - может добавлять/удалять собственные шутки на сайт, просматривать шутки других, добавлять их в избранное или отправлять на них жалобы (максимум 3 раза за день)
  • Неавторизированный пользователь - не имеет доступ ни к какому контенту, пока не авторизуется/зарегистрируется (любой запрос перенаправляет на страницу с регистрацией/авторизацией)

UI

  • Страница ленты, где будут публиковаться шутки людей, на которых пользователь подписан (будет возможность отсортировать шутки по рейтингу за 24 часа, 1 неделя, 1 месяц, всё время)
  • Поиск шуток/людей (интерфейс такой же, как у ленты, меняется только содержимое)
  • Личная страница, где пользователь может опубликовать свои шутки (или же страница другого пользователя. отличие лишь в том, что на чужой странице будет ограничен доступ к публикации шуток)
  • Страница с настройками. Для администраторов будет добавлена отдельная ссылка на интерфейс, который позволяет просматривать жалобы на других пользователей и добавлять тэги
  • Создание шутки (всплывающее окно в личной странице)
  • Создание жалобы

Технологии разработки

Язык программирования

  • Golang (Backend)
  • JavaScript (Frontend)

СУБД

PostgreSQL

Тестирование

Postman

Начало использования

Docker

Перед использованием необходимо создать файлы .env в главной и ./frontend директориях (Примеры наполнения этих файлов - с припиской .example; GITHUB_OAUTH_CLIENT_ID = REACT_APP_CLIENT_ID, GITHUB_OAUTH_CLIENT_SECRET - необходимо заполнить полученными данными из Github Oauth, остальное - по желанию)

Для запуска контейнеров в основной директории вводим команду - docker compose up --build

Сайт работает по адресу: localhost:3000; Adminer работает по адресу: localhost:8080

Kubernetes

Перед использованием необходимо создать файлы .env в главной и ./frontend директориях (Примеры наполнения этих файлов - с припиской .example; GITHUB_OAUTH_CLIENT_ID = REACT_APP_CLIENT_ID, GITHUB_OAUTH_CLIENT_SECRET - необходимо заполнить полученными данными из Github Oauth, остальное - по желанию)

  1. Запустите minikube
  2. Запустите build.sh файл в основной директории для создания frontend и backend image внутри кластера
  3. Запустите каждый из манифестов в директории ./k8s (kubectl create -f frontend/frontend-workload.yml)
  4. В поде с базой данных создайте базу данных с названием <DB_DBNAME>
  5. Запустите launch.sh для прокидывания портов

Сайт работает по адресу: localhost:3000; Adminer работает по адресу: localhost:8080

About

Test task for "Introduction to Database Management Systems" discipline

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published