2 Commits 0f907ca131 ... 1b63da1d3c

Autor SHA1 Mensaje Fecha
  nljubivaya 1b63da1d3c added all docs hace 1 mes
  unknown 0f907ca131 added docs hace 1 mes

+ 0 - 0
README.md


+ 70 - 0
Документация/выбор паттерна, ПО.docx

@@ -0,0 +1,70 @@
+   Выбор паттерна проектирования
+   MVVM (Model-View-ViewModel) - это архитектурный паттерн, который идеально подходит для мобильных приложений с динамичными пользовательскими интерфейсами, как "Pack & Go". Вот как MVVM может быть использован:
+   1. Model (Модель):
+    Данные: Представляет данные приложения, например, информацию о турах, отелях, местах назначения, клиентах, бронированиях.
+    Логика данных: Содержит логику доступа к данным, например, взаимодействие с API, базы данных, локальное хранилище. 
+   2. View (Вид):
+    Пользовательский интерфейс: Представляет собой визуальный интерфейс приложения, разработанный с помощью UI-фреймворка (например, Android Jetpack Compose, SwiftUI).
+    Связь с ViewModel: View наблюдает за изменениями в ViewModel и обновляет свой интерфейс в соответствии с этими изменениями.
+    Пример: Экран поиска туров, содержащий поля ввода, список найденных туров, кнопки фильтрации и т.д.
+   3. ViewModel (Модель представления):
+    Логика представления: Содержит логику, связанную с представлением данных, например, форматирование, фильтрация, сортировка, обработка ошибок. 
+    Общение с Model: ViewModel взаимодействует с Model для получения и обновления данных.
+    Общение с View: ViewModel предоставляет View данные в виде наблюдаемых свойств, которые обновляются при изменении данных Model.
+    Пример: ViewModel для экрана поиска туров, содержащий методы для поиска туров по заданным параметрам, сортировки результатов, обработки ошибок и обновления данных в View.
+   Преимущества использования MVVM для "Pack & Go":
+    Разделение ответственности: Четкое разделение логики представления, данных и логики доступа к данным.
+    Тестируемость: ViewModel можно легко тестировать изолированно от View и Model.
+    Повторное использование: ViewModel может быть повторно использован в разных View.
+    Упрощение разработки: Разработчики могут сосредоточиться на конкретной части приложения, не отвлекаясь на другие.
+    Обновление интерфейса: View автоматически обновляется при изменении данных в ViewModel.
+    Более чистый код: MVVM способствует созданию более чистого, организованного и легко читаемого кода.
+   Дополнительные аспекты MVVM для "Pack & Go":
+    Navigation: Использование ViewModel для управления навигацией между экранами (например, переход от экрана поиска туров к экрану подробной информации о туре).
+    Data Binding: Использование фреймворков для автоматизации синхронизации данных между View и ViewModel (например, Jetpack Compose, SwiftUI).
+    State Management: Использование архитектурных решений для управления состоянием приложения (например, Jetpack Compose, LiveData, Flow).
+    Dependency Injection: Использование DI-фреймворков для внедрения зависимостей (например, Hilt, Koin) в ViewModel
+   MVVM - это мощный и гибкий паттерн, который поможет создать высококачественное, масштабируемое и легко поддерживаемое мобильное приложение "Pack & Go".
+   Выбор для реализации ПО и обоснование выбора
+   Для реализации мобильного приложения были выбраны: платформа разработки  -  Android Studio с использованием языка программирования Kotlin, база данных Supabase
+   Преимущества использования Kotlin: 
+   Современный язык: Kotlin  --  это современный язык программирования, который является более лаконичным и безопасным, чем Java. Он предлагает меньше возможностей для ошибок и делает код более читаемым. 
+   Функциональное программирование: Kotlin поддерживает функциональное программирование, что позволяет создавать более элегантный и модульный код. 
+   Совместимость с Java: Kotlin полностью совместим с Java, поэтому вы можете легко интегрировать его в существующие проекты. 
+   Поддержка Android: Google объявил Kotlin официальным языком для разработки Android приложений, что означает, что он будет активно поддерживаться и развиваться. 
+   Null safety: Kotlin имеет встроенную систему для предотвращения ошибок, связанных с null-значениями, что делает код более стабильным. 
+   Преимущества использования Android Studio:
+   Официальный инструмент разработки: Android Studio - это официальная среда разработки от Google для Android, предлагающая богатые инструменты для разработки, отладки и тестирования. 
+   Удобная работа с Kotlin: Android Studio предоставляет отличную поддержку Kotlin, включая автодополнение, рефакторинг и отладку.  Эмуляторы и симуляторы: Android Studio предоставляет встроенные эмуляторы и симуляторы для тестирования приложений на разных версиях Android. 
+   Инструменты для дизайна: Android Studio имеет инструменты для создания пользовательских интерфейсов с помощью drag-and-drop и XML. 
+   Преимущества использования Supabase: 
+   Open Source: Supabase  --  это открытая платформа, что означает доступность кода и возможность его модификации. 
+   Backend-as-a-Service: Supabase предоставляет готовую инфраструктуру для создания бэкенда, что упрощает разработку и сокращает время вывода приложения на рынок. 
+   Полноценная база данных: Supabase включает в себя PostgreSQL, одну из самых надежных и гибких реляционных баз данных. 
+   Сервисы реального времени: Supabase предоставляет сервисы реального времени для построения функций, например, чатов или обновлений в режиме реального времени. 
+   Управление пользователями: Supabase предлагает простой способ управления пользователями, аутентификации и авторизации. Преимущества совместного использования: 
+   Быстрая разработка: Сочетание Kotlin, Android Studio и Supabase позволяет быстро создавать мобильные приложения, используя современные инструменты и технологии. 
+   Масштабируемость: Supabase обеспечивает масштабируемость вашего приложения, что делает его подходящим как для небольших, так и для крупных проектов. 
+   Упрощение работы: Supabase позволяет сосредоточиться на логике приложения, вместо того, чтобы тратить время на настройку инфраструктуры. 
+   Преимущества использования Google Карты: 
+   Google Карты используют огромную базу данных, постоянно обновляемую с помощью спутниковых снимков, стрит-вью и данных пользователей.  Широкий охват: Карты охватывают практически весь мир, включая удаленные районы и небольшие населенные пункты.  Многообразие информации: Карты предоставляют подробные сведения о местах, включая адреса, телефоны, часы работы, отзывы пользователей, фотографии, маршруты, цены, транспортные средства и многое другое. 
+   Google Карты доступны на множестве языков, что удобно для путешественников. 
+   Навигация по Google Картам интуитивна и понятна даже для начинающих. 
+   Алгоритмы Google Карт оптимизируют маршруты, учитывая время, расстояние, транспортные средства, дорожные условия, наличие пробок и ограничения скорости. 
+   Скачать карты для автономного использования, чтобы не тратить мобильный трафик во время путешествия. 
+    Планирование путешествий, создание маршрутов для пеших прогулок, велосипедных поездок, общественного транспорта, поездок на машине, а также возможность поиска отелей, ресторанов, достопримечательностей и других мест поблизости. 
+   Обновления в реальном времени, информация о погоде, закрытых дорогах, дорожных работах и других важных событиях. 
+   Интеграция с другими сервисами Google
+   Основные функции Google Карт доступны бесплатно. 
+   Многоплатформенность: доступны для различных устройств, включая смартфоны, планшеты, компьютеры и даже носимые устройства. 
+   Постоянное развитие: Google постоянно обновляет и улучшает функциональность Google Карт. 
+   В целом, выбор Kotlin, Android Studio, Supabase и Google карты обеспечивает отличную основу для создания современных, масштабируемых и безопасных мобильных приложений.
+   Преимущества Figma для разработки макета мобильного приложения:
+   Кроссплатформенность: Figma - это веб-приложение, поэтому оно доступно на любой платформе, включая Windows, macOS и Linux. Это позволяет команде разработчиков, дизайнеров и менеджеров проекта эффективно сотрудничать, независимо от их операционных систем.
+   Интеграция с другими инструментами: Figma легко интегрируется с популярными инструментами для разработки мобильных приложений, такими как Xcode, Android Studio, Sketch и Adobe Creative Cloud. Это позволяет гладко передавать дизайнерские активы и прототипы разработчикам.
+   Удобство прототипирования: Figma предлагает мощные инструменты для создания интерактивных прототипов, включая анимацию, переходы между экранами и симуляцию жестов. Это помогает дизайнерам и разработчикам лучше понять поток пользовательского интерфейса и взаимодействие.
+   Масштабируемость и адаптивность: Figma поддерживает векторные изображения, что позволяет легко масштабировать макеты для различных размеров экранов мобильных устройств. Это упрощает создание адаптивных пользовательских интерфейсов.
+   Управление компонентами и библиотеками: Figma позволяет создавать и повторно использовать компоненты, такие как кнопки, иконки и макеты экранов. Это помогает поддерживать последовательность дизайна и ускоряет итерации.
+   Удобство экспорта и передачи разработчикам: Figma предоставляет простые способы экспорта активов, таких как изображения, иконки и CSS-стили, что облегчает их интеграцию в код мобильного приложения.
+   Доступность и ценовая политика: Figma предлагает бесплатный план для индивидуальных пользователей, а также гибкие тарифные планы для команд, что делает его доступным для проектов любого размера.
+   В целом, Figma является мощным и удобным инструментом для создания и совместной работы над макетами мобильных приложений, обеспечивая эффективное взаимодействие между дизайнерами и разработчиками.

+ 117 - 0
Документация/тз.docx

@@ -0,0 +1,117 @@
+ Разработка технического задания
+Название приложения: Pack & Go
+Краткое описание: Приложение для туристического агентства - это удобная и информативная платформа, которая предоставляет пользователям возможность исследовать и оценивать различные страны по интересным критериям. В отличие от традиционных туристических агентств, данное приложение позволяет пользователям просматривать информацию о разных странах и их достопримечательностях, но они не могут выполнять покупок или бронирования туров.
+Основные функции приложения включают:
+1. Поиск и отображение информации о различных странах, включая культурные особенности, исторические события, природные достопримечательности и другие интересные факты.
+2. Возможность добавлять страны в избранное, чтобы легко находить их в будущем и сохранять информацию для последующего использования.
+3. Простой и удобный интерфейс, который позволяет пользователям легко двигаться по приложению и находить нужные данные.
+Цель такого приложения заключается в том, чтобы предоставить пользователям информацию о разных странах и стать полезным инструментом для планирования и организации поездок. Однако, оно не предназначено для незамедлительной покупки или бронирования туров, что позволяет пользователям мириться с тем, что не могут купить тут и ничего не могут покупать, но им предоставляется возможность добавлять страны в избранное для последующего использования.
+Платформа: Android
+Язык разработки: Kotlin.
+Сроки разработки: 
+Постановка целей и задач (4 ак. ч.  -  2 очных занятия):
+2 подгруппа (00.10.2024)
+Разработка макета [HYPERLINK: https://moodle.ngknn.ru/mod/assign/view.php?id=40280] приложения (6 ак.ч.  -  3 очных занятия):
+2 подгруппа (00.10.2024)
+Разработка серверной части приложения (6 ак.ч.  -  3 очных занятия):
+2 подгруппа (00.10.2024)
+Тестирование серверной части приложения (4 ак.ч.  -  2 очных занятия):
+2 подгруппа (00.10.2024)
+Разработка мобильного приложения [HYPERLINK: https://moodle.ngknn.ru/mod/assign/view.php?id=46034] (26 ак.ч.  -  13 очных занятий):
+2 подгруппа (00.10.2024)
+Тестирование мобильного приложения (4 ак.ч.  -  2 очных занятия):
+2 подгруппа (00.10.2024)
+Подготовка общего отчета и презентации (2 ак.ч.  -  1 очное занятие).
+2 подгруппа (00.10.2024)
+Защита проекта (2 ак.ч.  -  1 очное занятие):
+2 подгруппа (00.10.2024)
+Целевая аудитория для туристического приложения может быть разнообразной, в зависимости от специализации. Однако в целом, целевая аудитория может включает в себя следующие группы:
+1. Люди, планирующие отпуск или путешествие: Это могут быть отдельные туристы, пары, семьи или друзья, которые хотят рассмотреть варианты через приложение для удобства и безопасности.
+2. Корпоративные клиенты: Крупные и малые компании, которые ищут помощь в организации командных поездок, корпоративных мероприятий или индивидуальных деловых поездок.
+3. Группы туристов: Это могут быть школьные группы, университетские экскурсии, клубы путешественников и другие группы людей, желающих посетить различные места вместе.
+4. Пожилые люди: Туристические агентства также могут работать с пожилыми людьми, предоставляя специальные туры, учитывающие их потребности и интересы.
+Целевая аудитория может также включать тех, кто заинтересован в конкретных типах туров, таких как круизы, экскурсии, спортивный туризм, экзотические поездки и т.д. Каждая целевая группа требует индивидуального подхода и специфических предложений, поэтому важно, чтобы тур агентство понимало интересы и потребности своей аудитории.
+Требования к дизайну и оформлению
+Цвета: бирюзовый 99F3FA, черный, белый, синий 76C7D9
+Шрифт: Inter
+Картинки: яркие, четки изображения.
+Дизайн
+Стиль: Современный, привлекательный, создающий атмосферу путешествий
+Цветовая гамма: Использование ярких, насыщенных цветов, ассоциирующихся с отдыхом и путешествиями
+Шрифты: Четкие, легко читаемые шрифты
+Изображения: Высококачественные фотографии и видео, передающие красоту и разнообразие туристических направлений
+
+ Проектирование требований к серверной части приложения
+Функциональные требования:
+Пользователи могут регистрироваться в приложении, используя логин и пароль.
+Пользователи могут просматривать список стран, доступных для путешествия.
+Пользователи могут отмечать страны, в которые они хотят поехать.
+Пользователи могут просматривать информацию о выбранных странах, используя интеграцию с Google Maps.
+Проектирование базы данных Supabase:
+Таблица "city" в базе данных Supabase предназначена для хранения информации о городах. Структура таблицы состоит из нескольких столбцов, каждый из которых хранит определенную информацию о городе. 
+name - имя города, представленное в виде текста
+id_country - ссылка на ФК из таблицы стран. Это поле используется для связи с таблицей стран, чтобы задать взаимосвязь между городом и страной, где он расположен.
+description - текстовое поле, представляющее короткое описание города, включая исторические, культурные и географические особенности.
+plane - целое число, представленное в восьмибитном формате. Это поле используется для хранения средней цены на билет на перелет для одного человека из данного города.
+hotel - текстовое поле, представляющее среднюю стоимость размещения в пятизвездочном отеле в данном городе.
+Dates - текстовое поле, представляющее наиболее благоприятные даты для посещения города. Это включает такие факторы, как погоду, культурные мероприятия или другие события.
+attractions - текстовое поле, представляющее культурные и исторические достопримечательности города. Оно может включать музеи, памятники, парки, площади и другие достопримечательности.
+photo - текстовое поле, представляющее ссылку на фотографию города.
+Таблица под названием `country` имеет две колонки: `Id_country` и `name`. 1. `Id_country`: Это уникальный идентификатор каждой записи в таблице. 
+name: Это страна, которая хранится в каждой записи таблицы. 
+Таблица "users" в базе данных Supabase имеет следующую структуру:
+Колонки таблицы:
+- Id_user: Уникальный идентификатор пользователя, UUID (Universally Unique Identifier). 
+- name: Заглавное имя пользователя
+- surname: Фамилия пользователя
+- patronymic: отчество пользователя
+- phone: номер телефона пользователя
+- email: Электронная почта пользователя
+- password: Пароль пользователя, который может быть строкой и содержать хэшированный или зашифрованный пароль пользователя. 
+Таблица "review" в базе данных Supabase имеет следующую структуру:
+id_review: Это поле является первичным ключом (Primary Key)
+id_user: Это поле является Foreign Key, который ссылается на таблицу пользователей. Оно содержит идентификатор пользователя, который оставил данный обзор. С помощью этого поля можно связать информацию об обзоре с информацией о пользователе, например, его именем или профилем.
+id_city: Это поле является ФК, который ссылается на таблицу городов. Оно содержит идентификатор города, который связан с данным обзором. С помощью этого поля можно связать информацию об обзоре с информацией о городе, например, его названием или географическим положением.
+review: Это поле содержит сам текст обзора, который был оставлен пользователем. Это может быть описание опыта, отзыв о продукте или услуге, комментарий о качестве или оценка.
+Таблица "Favourite" (Избранное) используется для хранения информации о любимых городах пользователей в системе. В таблице представлены три основных столбца, каждый из которых передаёт определённую информацию:
+ id_favourite: Это идентификатор строки в таблице, который уникально определяет каждую запись. 
+id_user: Этот столбец содержит идентификатор пользователя, который добавил данный город в свои избранные. В системе каждый пользователь имеет свой уникальный идентификатор, который помогает отслеживать все действия и предпочтения конкретного пользователя. С помощью этого столбца можно легко определить, кто добавил какой-то город в избранное.
+id_city: В этом столбце хранится идентификатор города, который был добавлен в избранное пользователем. Этот идентификатор связывает запись в таблице "Favourite" с соответствующей записью в таблице "City". Таким образом, можно легко получить доступ к информации о каждом города, который находится в избранном списке пользователя.
+.
+ Проектирование требований к мобильному приложению
+Основные функции:
+Карта мира:
+Поиск: Возможность поиска стран по названию, региону, типу отдыха (пляжный, горный, культурный) и др.
+Фильтр: Возможность фильтрации стран по критериям (бюджет, время года, визовый режим)
+Информация о стране: При нажатии на страну на карте:
+Основная информация: Название, флаг, краткое описание, популярные достопримечательности.
+Фотографии: Фотогалерея страны.
+Отзывы: Отзывы других путешественников о стране.
+Сравнение цен: Информация о ценах на авиабилеты, отели, туры.
+Визовая информация: Необходимость визы, требования к документам.
+Избранное: Возможность добавить страну в избранное для дальнейшего изучения.
+Личный кабинет:
+Регистрация/Вход: Простой и удобный процесс регистрации и входа в аккаунт.
+Профиль пользователя: Возможность редактирования профиля (имя, email, телефон).
+Избранное: Список стран, добавленных в избранное.
+Дополнительные функции:
+Поиск туров: Возможность поиска туров по направлению, типу тура (отдых, экскурсии, шоппинг).
+Онлайн-чат: Возможность общения с онлайн менеджером туристического агентства.
+Технические требования:
+Платформы: Android
+Язык программирования: Kotlin
+База данных: Supabase
+Приложение для разработки: Android Studio
+Требования к дизайну:
+Простой и интуитивно понятный интерфейс.
+Умеренно яркая, но привлекательная цветовая схема.
+Высококачественные изображения и видео.
+Соответствие бренду туристического агентства.
+Требования к безопасности:
+Защита персональных данных пользователей.
+Защита от несанкционированного доступа к информации.
+Требования к тестированию:
+Функциональное тестирование: Проверка всех функций приложения.
+Тестирование производительности: Проверка скорости работы приложения.
+Тестирование юзабилити: Проверка удобства использования приложения.
+Тестирование на разных устройствах: Проверка совместимости приложения с различными моделями смартфонов.