Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/gvoz-dev/librarium

Backend Scala App
https://github.com/gvoz-dev/librarium

scala zio

Last synced: about 1 month ago
JSON representation

Backend Scala App

Awesome Lists containing this project

README

        

# librarium

Бэкенд веб-приложения, посвящённого литературе.
Сервис предоставляет информацию о книгах, позволяет вести личную библиотеку пользователя,
обсуждать книги в комментариях, писать приватные комментарии для заметок или цитат,
ставить оценки книгам и вести учёт прочитанного.

Приложение разрабатывается на языке **Scala 3**.
При разработке используется стек, основанный на системе эффектов **ZIO** и её экосистеме:
**ZIO HTTP**, **ZIO Quill**, **ZIO Config**, **ZIO Logging**, **ZIO JSON**, **ZIO Schema** и **ZIO Test**.
В качестве СУБД используется **PostgreSQL**.
Миграции базы данных выполняются с помощью **Flyway**.

## Сборка и запуск

Для создания Docker-образа приложения необходимо выполнить следующую команду:

```bash
sbt Docker/publishLocal
```

Далее для запуска приложения (вместе с контейнером базы данных) нужно выполнить следующую команду:

```bash
docker compose up
```

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

- [x] Реализовать API для аутентификации пользователей сервиса.
- [x] Реализовать API для регистрации пользователей и управления ими.
- [x] Реализовать API для управления книгами:
получение списка книг, получение сведений об отдельной книге, создание, изменение и удаление книги.
- [x] Реализовать API для управления личной библиотекой пользователя:
получение книг из библиотеки пользователя, добавление и удаление книг в/из неё.
- [x] Реализовать API для получения, создания, изменения и удаления комментариев к книгам.
- [x] Реализовать API для управления оценками (рейтингами) книг.
- [x] Реализовать API для управления прогрессом чтения книг.
- [x] Реализовать API для управления авторами произведений.
- [x] Реализовать API для управления издателями книг.

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

- Автоматически генерируемый [Swagger UI](http://localhost:8080/docs/openapi).
- Перечень команд [cURL](./doc/CURL.md).

## После MVP

- [ ] Добавить поддержку S3 для хранения книжных обложек и другого статического контента.
- [ ] Добавить пагинацию и возможность сортировки данных.
- [ ] Расширить возможности поиска информации.
- [ ] ...