Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/azonaz/travelschedule
The mobile application allows users to search and view vehicle schedules in different cities, as well as receive information about carriers
https://github.com/azonaz/travelschedule
practice-project swift swiftui
Last synced: about 2 months ago
JSON representation
The mobile application allows users to search and view vehicle schedules in different cities, as well as receive information about carriers
- Host: GitHub
- URL: https://github.com/azonaz/travelschedule
- Owner: Azonaz
- Created: 2024-03-08T14:27:29.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-03-13T07:54:46.000Z (11 months ago)
- Last Synced: 2024-03-13T08:49:42.437Z (11 months ago)
- Topics: practice-project, swift, swiftui
- Language: Swift
- Homepage:
- Size: 25.4 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Техническое задание для мобильного приложения «Расписание Путешествий»
## 1. Введение
Техническое задание описывает требования и детали реализации мобильного приложения «Расписание Путешествий». Готовое приложение предоставляет расписание транспорта и информацию о маршрутах с использованием API Яндекс.Расписания.
## 2. Цели и задачи
Цель проекта — создать мобильное приложения для iOS, которое позволит пользователям искать и просматривать расписание движения транспортных средств в различных городах, а также получать информацию о перевозчиках.
**Основные задачи:**
- Разработать пользовательский интерфейс с четырьмя основными и четырьмя второстепенными экранами.
- Интегрировать в приложение API Яндекс.Расписания, чтобы получать данные о расписании.
- Реализовать систему сторис с новостным контентом.## 3. Функциональные требования
### 3.1. Экраны приложения
- **Стартовый экран:**
- Панель со сторис сверху экрана.
- Поисковые строки для выбора городов по направлениям «откуда» и «куда».
- **Алгоритмы и действия:**
- Пользователь нажимает на строку с плэйсходрером «откуда» и переходит на экран поиска отправной точки.
- Пользователь нажимает на строку с плэйсходрером «куда» и переходит на экран поиска города прибытия.
- Пользователь тапает по иконке сторис для открытия полноэкранного просмотра.
- Кнопка «найти» не отображается/скрыта до тех пор пока не заполнены обе строки «откуда» и «куда».
- Если обе строки заполнены, то кнопка «найти» отображается. Нажав на неё, пользователь переходит на экран расписания/выбора рейса.- **Экран «Выбор города»:**
- Поисковая строка в верхней части экрана для ввода названия города.
- Список городов под поисковой строкой, где пользователь может выбрать населённый пункт из предложенного списка.
- **Алгоритмы и действия:**
- Пользователь вводит название города в поисковую строку.
- По мере ввода происходит автоматический поиск/фильтрация и отображение подходящих городов в реальном времени.
- Пользователь выбирает город из предложенного списка, что приводит к переходу на следующий экран.- **Экран станций:**
- Список всех станций выбранного города.
- Возможность выбора станции.
- **Алгоритмы и действия:**
- Пользователь вводит название станции в поисковую строку или просматривает список всех доступных станций.
- Поиск станции также работает в режиме реального времени.
- После выбора станции пользователь возвращается к экрану выбора городов по направлениям «откуда» и «куда», на котором уже отображается кнопка «найти».- **Экран расписания:**
- Отображение расписания по выбранным станциям.
- Кнопка перехода на экран с фильтрами для настрокий сортировки по пересадкам и времени отправления.
- **Алгоритмы и действия:**
- На этом экране пользователь может просматривать все доступные рейсы из выбранной станции.
- Пользователь выбирает рейс, чтобы увидеть подробную информацию о нем и о перевозчике.- **Экран уточнения параметров маршрута:**
- Отображение и выбор фильтров по времени отправления.
- Включение/отключение показа маршрутов с пересадками.
- **Алгоритмы и действия:**
- Возможность уточнения поиска по времени отправления и наличию пересадок.- **Экран информации о перевозчике:**
- Информация о перевозчике, включая контактные данные.
- **Алгоритмы и действия:**
- На экране отображается подробная информация о выбранном перевозчике, включая логотип, название компании, веб-сайт и номер телефона.
- Пользователь может перейти на сайт перевозчика или позвонить по номеру, используя соответствующие ссылки или кнопки.- **Экран настроек:**
- Переключение между светлой и тёмной темой интерфейса.
- Переход на просмотр пользовательского соглашения.
- Информация об использовании API Яндекс Расписания.
- Информация о версии приложения.
- **Алгоритмы и действия:**
- Пользователь может изменить тему приложения с темной на светлую и обратно.
- Возможность просмотра пользовательского соглашения.
- Возможность просмотра версии приложения.
- Информация о том, что приложение использует API Яндекс.Расписаний.- **Экран «Сторис» (Stories Screen):**
- Сторис содержит визуальные и текстовые истории, связанные с путешествиями, новостями или обновлениями.
- В каждой сторис присутствуют изображения и связанный с ними текст.
- В верхней части экрана присутствуют индикаторы: количество сториз и время до автоматического закрытия/перехода к следующей.
- **Алгоритмы и доступные действия**:
- В полноэкранном режиме пользователь может листать сторис вправо или влево, тапая по соответствующим сторонам экрана или свайпая по экрану в соотвествующем направлении.
- Временные индикаторы на верхней части экрана показывают прогресс просмотра текущей сторис, показывая время до переключения на следующую сторис.
- Время просмотра одной сторис 10 секунд.
- Пользователь может закрыть сторис и вернуться на стартовый экран, тапнув по крестику в правом верхнем углу экрана или свайпнув сторис сниз.
- Сторис автоматически переключаются после завершения времени просмотра, позволяя пользователю увидеть следующую сторис без вмешательства.
- После просмотра последней сторис, экран автоматически закрывается.### 3.2. Навигация
- Навигация между экранами типа master-detail.
- Таббар для перехода к начальному экрану и экрану настроек.
- Для показа сторис окно отображается модально.## 4. Нефункциональные требования
### 4.1. Технические требования
- Архитектура: MVVM
- Поддержка iOS версии 15.0 и выше.
- Язык программирования: Swift 5.x.
- Использование SwiftUI при имплементации интерфейса.
- Адаптивный дизайн для поддержки различных размеров экранов.
- Реактивное программирование с использованием Combine.
- Асинхронное программирование с использованием async/await.
- Кодогенерация сетевого слоя.
- Соответствие SOLID. Примение паттернов.### 4.2. Дополнительные требования
- Для обеспечения полной функциональности приложения, нужно реализовать сетевой слой, используя кодогенерацию для всех необходимых запросов.
- Все запросы к API должны выполняться асинхронно с использованием структурированной многопоточности async/await. Ошибки должны корректно обрабатываться и отображаться пользователю в удобной форме.
- Должна быть предусмотрена обработка состояний загрузки, ошибок и пустых состояний.
- Интерфейс должен быть адаптирован для использования в темной и светлой теме.
- Должено быть реализовано сохранение выбранных пользователем настроек.
- Тексты и медиа для сторис должны загружаться из локальных источников.
- Необходимо внедрить систему аналитики для отслеживания поведения пользователя и улучшения приложения на основе этих данных.
- Приложение должно поддерживать адаптивный дизайн для различных размеров экранов и ориентаций.
- Все текстовые данные должны быть локализованы и поддерживать как минимум русский и английский языки.
- Документация кода и комментарии должны быть написаны на английском языке для универсальности и доступности.### 4.5. Требования к дизайну
- Соответствие дизайну Human Interface Guidelines от Apple.
- Интуитивно понятные элементы управления и взаимодействие с ними.### 4.5. Тестирование
- Необходимо разработать комплексный план тестирования, включающий unit-тесты, UI-тесты.
- Приложение должно пройти тестирование на реальных устройствах с различными версиями iOS.### 5. Этапы и сроки реализации
- Проектирование и разработка пользовательского интерфейса: 6 недель.
- Интеграция API Яндекс Расписания: 2 недели.