Git Product home page Git Product logo

informed-student-backend's Introduction

informed-student-back-end

About

Проект реализован в рамках академии бэкенда Tinkoff. Представляет собой сервис для студентов позволяющий делится учебными материалами, обсуждать их, а также узнавать новости учебного заведения.

Фронтенд: GitHub

Stack

  • Spring Boot

  • PostgreSQL

  • Minio

  • Spring Security

  • Quartz

  • JUnit

  • TestContainers

Screenshots

Стартовая страница сервиса, авторизация реализована с помощью: welcome_page
Авторизация реализована с помощью Spring Security. Существует 3 роли пользователей: Administrator, Moderator, User; подробнее о ролях в разделе Roles

main_page
Посты принадлежат одной из категорий и предмету. Предметы относятся к одному из курсов (1-6).

post_and_comments_example
Есть возможность оставлять анонимные комментарии, удалять комментарии и посты может автор или администратор.

user_info_page
У каждого пользователя есть небольшая публичная страница с личной информацией.

comments_cleanup
У администратора есть панель управления регулярно выполняемыми задачами через соответсвующую панель. Для регулярных задач использован Quartz.

users_list
Администратор может просмотреть список всех пользователей сервиса и забанить любого пользователя. Забаненный пользователь не может зайти на сервис или зарегистрироваться под теми же реквизитами.

How to run

Fast Run

  1. Необходимо запустить .bat файл в папке docker (для Windows), что локально поднимет MinIO и Postgres.
  2. Установить "dev" профиль Spring в среде разработки (по умолчанию логин и пароль админа: admin).

Server

Для запуска сервера необходимо указать реквизиты для доступа к Postgres и MinIO, настройки SpringSecurity:

spring.datasource.username={Postgres username}
spring.datasource.password={Postgres password}

minio.datasource.username={MinIO username}
minio.datasource.password={MinIO password}

app.security.jwt.secret-key={Security key}
app.security.jwt.expiration-time={Key expiration time}

admin.username={Admin username}
admin.password={Admin password}

Security key можно сгенерировать на сайте: seanwasere.com/generate-random-hex/. Key expiration time - в миллисекундах, можно использовать значение 3600000 (6 часов). Admin username/password - логин и пароль администратора.

Запуск MinIO в Docker

Команда локально запустит контейнер MinIO из репозитория Docker:

docker run -p 9000:9000 -p 9001:9001 quay.io/minio/minio server /data --console-address ":9001"

Реквизиты по умолчанию:

minioadmin:minioadmin

Запуск Postgres в Docker

Команда запустит Postgres в контейнере

docker run --name {Container name} -e POSTGRES_USER={Postgres username} -e POSTGRES_PASSWORD={Postgres password} -e POSTGRES_DB=postgres -d postgres

Tests

Тестирование происходит с использованием тестовых контейнеров, требуется только запущенный Docker

Documentation

Документация API доступна в Swagger. Для получения доступа ко всем end-point необходима авторизация через администратора.

Roles

Существует три роли пользователя: ADMINISTRATOR, MODERATOR, USER. Их права:

ADMINISTRATOR MODERATOR USER
СОЗДАНИЕ ПОСТОВ ✔️ ✔️ ✔️
СОЗДАНИЕ КОМЕНТАРИЕВ ✔️ ✔️ ✔️
СОЗДАНИЕ ПРЕДМЕТОВ ✔️ ✔️
СОЗДАНИЕ ПАПОК ✔️ ✔️
ВЫДАЧА ПРАВ МОДЕРАТОРА ✔️

Любой зарегистрировавшийся пользователь получает роль USER. ADMINISTRATOR может создавать аккаунты MODERATOR'ов. ADMINISTRATOR существует только один, его реквизиты указываются при запуске.

informed-student-backend's People

Contributors

eugenehryz avatar exkaset avatar ivanuil avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.