Skip to content

Make-senior-cry/KOTIKi-backend

Repository files navigation

Backend социальной сети KOTIKI

KOTIKI - это революционная социальная сеть, предоставляющая пользователям широкие возможности, в которой каждый может почувствовать себя котиком. На платформе пользователи могут:

  • Создать и изменить аккаунт
  • Создать пост с текстом и/или фото
  • Просматривать посты других пользвателей
  • Начать чат с другим пользователем
  • Оставить реакцию на пост или пожаловаться на него
  • Подписаться на другого пользователя

Showcase

2023-05-24-17-07-11.mp4

Документация

Для просмотра документации API откройте файл api-docs.yaml из корня проекта

Технологический стек

  • Java 17
  • PostgreSQL — объектно-реляционная система управления базами данных
  • Docker — контейнеризатор приложений

Список зависимостей проекта

  • Spring Boot — набор инструментов и библиотек для создания приложений корпоративного уровня
  • Spring WebFlux — реактивный веб-фреймворк
  • Spring Security — фреймворк, предоставляющий механизмы построения систем аутентификации и авторизации
  • Spring Data — библиотека, которая добавляет дополнительный уровень абстракции поверх ORM реализации JPA
  • R2DBC — спецификация, направленная на стандартизацию доступа к базам данных SQL с использованием реактивных шаблонов
  • Lombok — библиотека для сокращения кода в классах
  • Flyway — инструмент миграции баз данных
  • Hibernate Reactive — реактивное API для Hibernate ORM

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

Для механизма аутентификации используются JWT, который работает следующим образом:

  1. Пользователь отправляет учетные данные на сервер.
  2. Сервер аутентифицирует пользователя и создает JWT-токен (refresh и access). Access токен содержит информацию о пользователе и данные о том, к каким ресурсам у пользователя есть доступ. Refresh токен используется для обновления access токена.
  3. Сервер устанавливает access и refresh токен в Cookie клиенту, присваивая им флаг httpOnly, чтобы ограничить чтение и запись данных посредством JavaScript.
  4. Сервер проверяет JWT-токен и предоставляет доступ к ресурсам, если токен действителен, в противном случае валидирует refresh токен пользователя, после чего обновляет access токен или запрещает клиенту доступ к ресурсам.

Запуск проекта

  1. Клонирование репозитория
git clone https://github.com/Make-senior-cry/KOTIKi-backend.git
cd KOTIKi-backend
  1. Запуск Docker Compose
docker-compose up

Releases

No releases published

Packages

No packages published