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

https://github.com/cptntotoro/full-stack-store-showcase

Онлайн-магазин (Java 21, Spring Boot, Hibernate, PostgreSQL, Lombok, Mapstruct, Maven, Docker, Thymeleaf, HTML, CSS, JavaScript)
https://github.com/cptntotoro/full-stack-store-showcase

docker-compose github-actions hibernate java-21 javascript lombok mapstruct maven postgresql spring-boot thymeleaf

Last synced: 2 months ago
JSON representation

Онлайн-магазин (Java 21, Spring Boot, Hibernate, PostgreSQL, Lombok, Mapstruct, Maven, Docker, Thymeleaf, HTML, CSS, JavaScript)

Awesome Lists containing this project

README

          

[![Java CI with Maven](https://github.com/cptntotoro/full-stack-store-showcase/actions/workflows/maven.yml/badge.svg)](https://github.com/cptntotoro/full-stack-store-showcase/actions/workflows/maven.yml) [![Coverage Status](https://coveralls.io/repos/github/cptntotoro/full-stack-store-showcase/badge.svg)](https://coveralls.io/github/cptntotoro/full-stack-store-showcase)

# Приложение "Онлайн-магазин"
Java 21, Spring Boot, Hibernate, PostgreSQL, Lombok, Mapstruct, Maven, Docker, Thymeleaf, HTML, CSS, JavaScript

## О проекте
Веб-приложение представляет собой витрину товаров.
Пользователь может положить товар в корзину, оформить, оплатить и отменить заказ.
Также пользователь может наполнить витрину товаров новыми товарами.

Предоставление актуальных данных для разных пользователей реализовано с помощью управления идентификатором пользователя через куки в OncePerRequestFilter в Spring Web.

Для отображения актуальной стоимости корзины и реализации UI элементов согласно её состоянию применен @ControllerAdvice.

Для уменьшения нагрузки на приложение состояние корзины кешируется с помощью Spring Cache.

## Демонстрация

![](demo.gif)

## 🚀 Как запускать

### В Docker

#### Только тесты
```
docker-compose --profile test up --build --abort-on-container-exit
```
Если ответ 0, все тесты прошли успешно

#### Только продакшен
```
docker-compose --profile prod up -d
```
Приложение будет доступно по адресу: http://localhost:8080/products.

### Остановка контейнеров

Чтобы остановить все запущенные контейнеры, выполните:

```
docker-compose down
```

Если вы хотите также удалить тома (volumes), используйте:

```
docker-compose down -v
```

### Локально

1. Разверните БД согласно application.properties и application-test.properties в отдельном приложении или среде разработки

2. Соберите проект:
```
mvn clean package
```

3. Запустите приложение:
```
java -jar target/yp-online-store.jar
```

Приложение будет доступно по адресу: http://localhost:8080/products.