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: 3 months 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.
- Host: GitHub
- URL: https://github.com/ath31st/window_calculator
- Owner: ath31st
- License: other
- Created: 2024-06-27T12:59:42.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2025-08-14T15:58:12.000Z (11 months ago)
- Last Synced: 2025-08-14T17:36:56.568Z (11 months ago)
- Topics: docker, docker-compose, flyway, jacoco, java, jwt, material-ui, maven, nextjs15, nginx-proxy, postgresql, spring-boot, typescript, zustand
- Language: Java
- Homepage:
- Size: 22.9 MB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Window calculator
Фулл-стек приложение для расчета стоимости работ по восстановлению элементов
пластиковых/деревянных/металлических окон, а так же для расчета стоимости изготовления оконных
сеток.
---
## Оглавление
1. [Описание проекта](#описание-проекта)
2. [Пример работы](#пример-работы)
3. [Технологии](#технологии)
4. [Установка](#установка)
5. [Использование](#использование)
6. [Архитектура проекта](#архитектура-проекта)
7. [Документация API](#документация-api)
8. [Тестирование](#тестирование)
9. [Автор](#автор)
10. [Лицензия](#лицензия)
---
## Описание проекта
Это фулл-стек приложение, предназначенное для расчета стоимости работ по восстановлению пластиковых,
деревянных и металлических окон, а также для расчета стоимости изготовления оконных сеток.
Приложение предоставляет удобный интерфейс для ввода данных окон или сеток, а затем
автоматически рассчитывает стоимость на основе заданных параметров, таких как размеры, материалы и
тип работы. Результаты расчета могут быть помещены в корзину и экспортированы в PDF файл. Так же,
существует возможность администрировать пользователей, добавлять/удалять/редактировать новые товары
и услуги.
---
## Пример работы
Видео-демонстрация работы приложения:
[Пример работы](https://github.com/user-attachments/assets/350725a0-a38e-4b7c-ad5d-d1d800267327)
---
## Технологии
Список основных технологий и инструментов, использованных в проекте:
- 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).