Skip to content

Sh1irr/VacationApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vacation Management System

RESTful веб-застосунок для управління базою даних туристичних напрямків (Країни -> Курорти -> Готелі).

Проєкт реалізовано на Java Spring Boot з використанням PostgreSQL (Docker), Spring Security та шаблонізатора Thymeleaf.

📋 Функціонал

Застосунок дозволяє працювати з трирівневою ієрархією даних:

  • Країни (Countries)
  • Курорти (Resorts)
  • Готелі (Hotels)

Ролі користувачів:

  1. GUEST (Неавторизований): Бачить тільки сторінку логіну.
  2. USER: Має доступ тільки на перегляд даних (Read-only).
  3. ADMIN: Має повний доступ (перегляд, додавання нових записів, видалення).

🛠 Технологічний стек

  • Java 21
  • Spring Boot 3.x / 4.x (Web, Data JPA, Security)
  • PostgreSQL 15 (база даних у Docker контейнері)
  • Thymeleaf (веб-інтерфейс)
  • Lombok (для скорочення бойлерплейт-коду та логування)
  • Docker & Docker Compose (для швидкого розгортання БД)

🚀 Інструкція із запуску

1. Попередні вимоги

  • Встановлений Docker Desktop (або Docker Engine).
  • Встановлений JDK 17 або вище.
  • Maven.

2. Запуск бази даних (Docker)

У корені проєкту знаходиться файл docker-compose.yaml та скрипт ініціалізації init.sql.

Відкрийте термінал у папці проєкту та виконайте:

docker compose up -d

Ця команда завантажить образ postgres:15-alpine, запустить контейнер і автоматично створить таблиці та наповнить їх початковими даними.

3. Налаштування змінних середовища

Перед запуском Java-додатка необхідно задати змінні середовища.

Необхідні змінні:

  • DB_USER<Ваш користувач>
  • DB_PASSWORD<Ваш пароль> (або значення, вказане у вашому файлі .env)

В IntelliJ IDEA:

4. Запуск додатка

Запустіть клас VacationAppApplication.java через IDE
або за допомогою Maven:

./mvnw spring-boot:run

Після запуску додаток буде доступний за адресою:
👉 http://localhost:8080


🔑 Облікові дані (для тестування)

Дані користувачів ініціалізуються автоматично при старті Docker-контейнера.

Роль Логін Пароль Опис
ADMIN admin admin Повний доступ (CRUD)
USER user user Тільки перегляд

Проєкт реалізує:

🔐 Безпека паролів (Base64)

Паролі в базі даних зберігаються не у відкритому вигляді, а закодовані в Base64.
Реалізовано кастомний PasswordEncoder у класі SecurityConfig.

🐳 Docker-середовище

База даних розгортається в ізольованому Docker-контейнері, що забезпечує портативність та однакове середовище запуску.
Використано легковаговий образ alpine.

⚙️ Безпечна конфігурація

Креденшали для підключення до бази даних передаються через Environment Variables, а не хардкодяться у файлі application.properties.

📝 Логування

Ключові операції (додавання, видалення, перегляд) логуються в консоль за допомогою бібліотеки Lombok (@Slf4j).


📂 Структура бази даних

  • users (id, login, password (Base64), role)
  • countries (id, name)
  • resorts (id, name, description, country_id)
  • hotels (id, name, stars, resort_id)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors