Тестовое задание для дисциплин "Введение в системы баз данных" и "Технологии Интернет и Web-программирования"
Урезанный аналог Reddit, направленный на публикацию шуток/анекдотов.
FunnyJokes
Шутки, анекдоты
https://drawsql.app/teams/test-team-30/diagrams/jokesdiagram
- Тэги могут добавлять в базу данных/удалять из базы данных только администраторы
- Каждый пользователь может добавлять шутки только в своё избранное
- Рейтинг - неотрицательное целое число
- Администратор
- Пользователь
- Неавторизированный пользователь
- Администратор - рассматривает жалобы пользователей посредством интерфейса на своей странице. Может добавлять новые тэги и блокировать пользователей (заблокированные пользователи не смогут публиковать свои шутки на протяжении 7 дней с начала бана)
- Пользователь - может добавлять/удалять собственные шутки на сайт, просматривать шутки других, добавлять их в избранное или отправлять на них жалобы (максимум 3 раза за день)
- Неавторизированный пользователь - не имеет доступ ни к какому контенту, пока не авторизуется/зарегистрируется (любой запрос перенаправляет на страницу с регистрацией/авторизацией)
- Страница ленты, где будут публиковаться шутки людей, на которых пользователь подписан (будет возможность отсортировать шутки по рейтингу за 24 часа, 1 неделя, 1 месяц, всё время)
- Поиск шуток/людей (интерфейс такой же, как у ленты, меняется только содержимое)
- Личная страница, где пользователь может опубликовать свои шутки (или же страница другого пользователя. отличие лишь в том, что на чужой странице будет ограничен доступ к публикации шуток)
- Страница с настройками. Для администраторов будет добавлена отдельная ссылка на интерфейс, который позволяет просматривать жалобы на других пользователей и добавлять тэги
- Создание шутки (всплывающее окно в личной странице)
- Создание жалобы
- Gorilla/Mux для API
- Pgx для интеграции с PostgreSQL (не ORM)
- React
- Redux
- Golang (Backend)
- JavaScript (Frontend)
PostgreSQL
Postman
Перед использованием необходимо создать файлы .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
Перед использованием необходимо создать файлы .env в главной и ./frontend директориях (Примеры наполнения этих файлов - с припиской .example; GITHUB_OAUTH_CLIENT_ID = REACT_APP_CLIENT_ID, GITHUB_OAUTH_CLIENT_SECRET - необходимо заполнить полученными данными из Github Oauth, остальное - по желанию)
- Запустите minikube
- Запустите build.sh файл в основной директории для создания frontend и backend image внутри кластера
- Запустите каждый из манифестов в директории ./k8s (kubectl create -f frontend/frontend-workload.yml)
- В поде с базой данных создайте базу данных с названием <DB_DBNAME>
- Запустите launch.sh для прокидывания портов
Сайт работает по адресу: localhost:3000; Adminer работает по адресу: localhost:8080