Skip to content

ferty460/weather_app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WeatherApp

Веб-приложение для просмотра текущей погоды. Пользователь может зарегистрироваться и добавить в коллекцию одну или несколько локаций (городов, сёл, других пунктов), после чего главная страница приложения начинает отображать список локаций с их текущей погодой.

Возможности

  • Регистрация и аутентификация
  • Поиск локаций по названию
  • Добавление локаций в персональную коллекцию
  • Просмотр текущей погоды для сохраненных локаций
  • Удаление локаций из коллекции

Стек технологий

  • Java 17
  • Maven
  • Spring 6
  • Hibernate
  • PostgreSQL
  • HikariCP
  • Liquibase
  • HTML / Thymeleaf
  • Bootstrap 5
  • JUnit 5
  • Mockito

HTTP endpoints

Общая информация

  • Приложение использует cookie-based авторизацию
  • После логина пользователю устанавливается cookie с идентификатором сессии
  • Все страницы доступны только авторизованным пользователям, кроме:
    • /
    • /auth/login
    • /auth/registration
  • Неавторизованный пользователь будет перенаправлён на страницу логина

Авторизация (/auth)

GET /auth/login

Описание: Отображает страницу входа в систему.

Ответ: HTML-страница login.html


POST /auth/login

Описание: Выполняет вход пользователя.

Тело запроса (form-data):

Поле Тип Описание
login string Логин пользователя
password string Пароль пользователя

Валидация:

  • login — не пустой, от 3 до 64 символов
  • password — не пустой, от 6 до 64 символов

Ответ: 302 Redirect -> /


GET /auth/registration

Описание: Отображает страницу регистрации.

Ответ: HTML-страница registration.html


POST /auth/registration

Описание: Регистрирует нового пользователя.

Тело запроса (form-data):

Поле Тип Описание
login string Уникальный логин
password string Пароль пользователя

Валидация:

  • login — не пустой, от 3 до 64 символов
  • password — не пустой, от 6 до 64 символов

Ответ: 302 Redirect -> /auth/login


POST /auth/logout

Описание: Выход пользователя из системы.

Поведение: Удаляет cookie сессии (если существует)

Ответ: 302 Redirect -> /auth/login


Главная страница

GET /

Описание: Главная страница приложения.

Ответ: HTML-страница index.html


Локации (/locations)

POST /locations

Описание: Добавляет новую локацию в список пользователя.

Тело запроса (form-data):

Поле Тип Описание
name string Название локации
lat decimal Широта
lon decimal Долгота

Ответ: 302 Redirect -> на страницу-источник (Referer) или /


DELETE /locations/{id}

Описание: Удаляет локацию пользователя по ID.

Параметры пути:

Параметр Тип Описание
id long ID локации

Ответ: 302 Redirect -> /


Поиск локаций

GET /locations/search

Описание: Поиск локаций по названию через OpenWeather API.

Query-параметры:

Параметр Тип Описание
query string Название города

Валидация: query не должен быть пустым

Ответ: HTML-страница search_result.html

Установка

Требования

  • Java 17+
  • PostgreSQL
  • Maven
  • Tomcat 11
  • API ключ OpenWeatherMap

Шаги установки

  1. Получение исходного кода
  • Клонируйте репозиторий
    git clone https://github.com/ferty460/weather_app.git
  1. Подготовка базы данных
  • Создание БД и пользователя
    CREATE DATABASE weatherapp;
    CREATE USER weather_user WITH PASSWORD 'strong_password';
    GRANT ALL PRIVILEGES ON DATABASE weatherapp TO weather_user;
  • Миграции - применяются автоматически при старте приложения
  1. Настройка переменных окружения

    • Создайте рабочий .env
    • Заполните переменные
  2. Сборка приложения

    mvnw clean package
    • После сборки в папке target появится файл ROOT.war
  3. Деплой в Tomcat

    • Скопируйте ROOT.war в папку webapps вашего Tomcat-сервера
  4. Перезапустите Tomcat

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

About

Веб-приложение для просмотра текущей погоды. Пользователь может зарегистрироваться и добавить в коллекцию одну или несколько локаций (городов, сёл, других пунктов), после чего главная страница приложения начинает отображать список локаций с их текущей погодой.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors