Skip to content

Latest commit

 

History

History
98 lines (77 loc) · 5.38 KB

README.md

File metadata and controls

98 lines (77 loc) · 5.38 KB

Погода

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

Проект создан в рамках Python Roadmap Сергея Жукова -> ссылка

logo

Запуск проекта

  1. Выполните клонирование проекта git clone https://github.com/Wh4tisl0ve/WeatherApp.git
  2. Выполните установку Docker
  3. Создайте .env файл и заполните переменные окружения
    Для dev-версии проекта:
  4. Выполните сборку Docker-image docker build -t weather_project_dev -f .\Dockerfile.dev .
  5. Выполните команду docker-compose -f docker-compose.dev.yml up -d --build
    Для prod-версии проекта:
  6. Выполните сборку Docker-image docker build -t weather_project_prod -f .\Dockerfile.prod .
  7. Выполните команду docker-compose -f docker-compose.prod.yml up -d --build

Пример .env

  • SECRET_KEY=Cекретный ключ для Django
  • DEBUG=Режим отладки(0 - выключен, 1 - включен)
  • ALLOWED_HOSTS=Список доменов, которые может обслуживать это приложение
  • DB_ENGINE=Используемый драйвер для работы с БД
  • POSTGRES_DB=Имя БД
  • POSTGRES_USER=Имя пользователя от БД
  • POSTGRES_PASSWORD=Пароль от БД
  • POSTGRES_HOST=Имя контейнера, в котором запущен PostgreSQL
  • POSTGRES_PORT=Порт БД
  • WEATHER_API_KEY=Уникальный ключ OpenWeatherAPI

Структура приложений Django

  • weatherapp/auth - Приложение, отвечающее за аутентификацию пользователя
  • weatherapp/sessions - Приложение, отвечающее за работу с сессиями
  • weatherapp/users - Приложение, отвечающее за работу с пользователями
  • weatherapp/weather - Приложение, отвечающее за работу с основной логикой

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

Страница авторизации

Адрес - /accounts/login. Представляет собой форму для авторизации пользователей.

auth

Страница регистрации

Адрес - /accounts/register. Представляет собой форму для регистрации пользователей.

register

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

Адрес - /. Представляет собой главную страницу приложения.

main

Страница поиска локаций

Адрес - /search. GET параметр name содержит имя локаций. Представляет собой главную страницу приложения. На данной странице отображается коллекция локаций пользователя.

search

База данных(структура)

В качестве системы управления базами данных была выбрана PostgreSQL. Для управления объектами бд была использована Django ORM. База данных содержит в себе 3 таблицы:

  1. Users - таблица, содержащая информацию о пользователях.
  2. Sessions - таблица, содержащая информацию о сессии пользователя.
  3. Locations - таблица, содержащая информацию о коллекции локаций пользователя.

new-match

Тесты

В качестве фреймворка для тестирования был использован unittest. Юнит и интеграционными тестами был покрыт основной функционал приложения. Основные тест-кейсы:

  • Проверка корректности аутентификации пользователя
  • Проверка работы механизма сессий(создание/истечение срока).
  • Проверка авторизации/регистрации пользователей.
  • Проверка работы внешнего API. Сервис по работе с OpenWeatherAPI покрыт Мок-тестами.

Стек

  • Python 3.12
  • Django 5.1.2
  • PostgreSQL
  • docker
  • unittest
  • requests
  • HTML/CSS(Bootstrap5)