Skip to content

Веб-приложение для просмотра текущей погоды

Notifications You must be signed in to change notification settings

Wh4tisl0ve/WeatherApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

21f785d · Dec 2, 2024

History

68 Commits
Nov 20, 2024
Dec 2, 2024
Dec 2, 2024
Nov 20, 2024
Nov 22, 2024
Nov 22, 2024
Dec 2, 2024
Nov 22, 2024
Nov 21, 2024

Repository files navigation

Погода

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

Проект создан в рамках 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)

About

Веб-приложение для просмотра текущей погоды

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published