Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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.
- Host: GitHub
- URL: https://github.com/ath31st/window_calculator
- Owner: ath31st
- License: other
- Created: 2024-06-27T12:59:42.000Z (7 months ago)
- Default Branch: master
- Last Pushed: 2025-01-11T07:25:20.000Z (2 days ago)
- Last Synced: 2025-01-11T08:25:59.677Z (2 days 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.7 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 файл. Так же,
существует возможность администрировать пользователей, добавлять/удалять/редактировать новые товары
и услуги.---
## Пример работы
Вот пример работы приложения:
![Пример работы](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).