Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/ath31st/window_calculator

Window Calculator is a full-stack app for calculating the cost of restoring windows and manufacturing window nets based on size, materials, and work type.
https://github.com/ath31st/window_calculator

docker docker-compose flyway jacoco java jwt material-ui maven nextjs15 nginx-proxy postgresql spring-boot typescript zustand

Last synced: about 9 hours ago
JSON representation

Window Calculator is a full-stack app for calculating the cost of restoring windows and manufacturing window nets based on size, materials, and work type.

Awesome Lists containing this project

README

        

# Window calculator

Фулл-стек приложение для расчета стоимости работ по восстановлению элементов
пластиковых/деревянных/металлических окон, а так же для расчета стоимости изготовления оконных
сеток.

---

## Оглавление

1. [Описание проекта](#описание-проекта)
2. [Пример работы](#пример-работы)
3. [Технологии](#технологии)
4. [Установка](#установка)
5. [Использование](#использование)
6. [Архитектура проекта](#архитектура-проекта)
7. [Документация API](#документация-api)
8. [Тестирование](#тестирование)
9. [Автор](#автор)
10. [Лицензия](#лицензия)

---

## Описание проекта

Это фулл-стек приложение, предназначенное для расчета стоимости работ по восстановлению пластиковых,
деревянных и металлических окон, а также для расчета стоимости изготовления оконных сеток.
Приложение предоставляет удобный интерфейс для ввода данных окон или сеток, а затем
автоматически рассчитывает стоимость на основе заданных параметров, таких как размеры, материалы и
тип работы. Результаты расчета могут быть помещены в корзину и экспортированы в PDF файл. Так же,
существует возможность администрировать пользователей, добавлять/удалять/редактировать новые товары
и услуги.

---

## Пример работы

Вот пример работы приложения:

![Пример работы](images/wc_presentation.gif)

---

## Технологии

Список основных технологий и инструментов, использованных в проекте:

- Backend: Java, Spring Boot, Spring Security, Flyway, PostgreSQL, Maven.
- Frontend: TypeScript, Next.js.
- Дополнительные: Zustand, Material UI, JWT, Jacoco, Docker Compose, Nginx.

---

## Установка

Эта часть проекта является приватной и имеет нюансы, связанные с установкой и настройкой.

---

## Использование

1. Подготовьте конфигурационные файлы (.env, .env.prod).
2. Запустите контейнеры приложения:
```bash
cd window_calculator && docker-compose up -d
```
3. Откройте браузер и перейдите по адресу:
```url
http://localhost:80
```

---

## Архитектура проекта

Краткое описание структуры проекта:

- `/client` — папка с фронтенд-частью приложения:
- **`/public`** — публичная папка, содержит статические файлы.
- **`/src/`** — папка с кодом приложения.
- **`/app`** — папка со страницами приложения.
- **`/components`** — переиспользуемые компоненты (например, формы ввода, кнопки, модальные
окна).
- **`/constants`** — константы приложения.
- **`/hooks`** — кастомные хуки React для управления состоянием и логикой взаимодействия.
- **`/interceptors`** — интерсепторы для обработки HTTP-запросов.
- **`/providers`** — провайдеры для управления состоянием приложения.
- **`/services`** — сервисы для бизнес-логики приложения.
- **`/utils`** — вспомогательные функции и утилиты.
- **`/stores`** — состояние приложения с использованием Zustand (например, для хранения
данных о пользователе).
- **`/types`** — типы приложения.

- `/server` — папка с бэкенд-частью приложения:
- **`src/main/java/sidim/doma/wc/`** — основной код приложения.
- **`/config`** — конфигурационные бины.
- **`/controller`** — контроллеры для обработки HTTP-запросов.
- **`/dto`** — DTO-классы для передачи данных между контроллерами и сервисами.
- **`/entity`** — сущности, отображающие таблицы в базе данных.
- **`/exception`** — классы исключений.
- **`/mapper`** — мапперы для преобразования объектов.
- **`/repository`** — репозитории для взаимодействия с базой данных.
- **`/service`** — сервисы, реализующие бизнес-логику.
- **`/util`** — вспомогательные классы.
- **`/resources`** — конфигурационные файлы, включая файл настроек базы данных и настройки
безопасности.
- **`/db.migration`** — миграции для Flyway, чтобы управлять изменениями в базе данных.

- `compose.yaml` — композ-файл Docker Compose, который определяет конфигурацию контейнеров
приложения.
- **`/server/Dockerfile`** — Dockerfile для сборки образа сервера приложения.
- **`/client/Dockerfile`** — Dockerfile для сборки образа клиента приложения.

---

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

Описание основных эндпоинтов API:

В процессе подготовки. В дальнейшем тут будет ссылка на OpenAPI-документацию.

---

## Тестирование

Инструкция по запуску тестов:

1. Установка зависимостей:
```bash
cd server && mvn install
```
2. Запуск unit-тестов:
```bash
mvn test
```

---

## Автор

- **Владимир Оленников**
- [GitHub](https://github.com/ath31st) | [LinkedIn](https://www.linkedin.com/in/ath31st/)

---

## Лицензия

Этот проект лицензируется в соответствии с лицензией Apache License 2.0.
Подробнее в файле [LICENSE](LICENSE).