ТЗ давал наставник. Банковское приложение: структура и экраны
Приложение будет состоять из 5 основных экранов + дополнительные (настройки, детализация).
1. Главный экран (Dashboard)
Назначение: Обзор курсов валют, быстрый доступ к основным функциям.
Элементы интерфейса:
- Шапка:
- Баланс (если есть авторизация)
- Кнопка уведомлений
- Блок "Курсы валют":
- Основные валюты (USD, EUR, RUB) + драгметаллы (золото, серебро)
- Кнопка "Все курсы" → переход на экран списка
- Блок "Конвертер":
- Поля для ввода суммы + выбор валют
- Результат конвертации в реальном времени
- Быстрый поиск банкоматов (по текущему местоположению)
Навигация:
- Тап по курсу → открывает график изменения
- Тап по "Конвертер" → разворачивает детальный конвертер
2. Карта банкоматов и отделений (Map View) API либо поищите конкретного банка, у некоторых есть открытые. Либо можно посмотреть как работает поиск на тех же яндекс картах.
Назначение: Поиск ближайших точек на карте.
**Элементы интерфейса:**
- Карта (Google Maps / Yandex Maps / MapKit) с маркерами:
- 🔴 Банкоматы
- 🔵 Отделения банка
- Фильтры вверху (опционально):
- По типу (банкомат/отделение)
- По услугам (обмен валют, кредиты и т.д.)
- Поисковая строка с автодополнением
- Кнопка "Моё местоположение"**
- Список ближайших точек (снизу, скроллится горизонтально)
Навигация:
- Тап по маркеру → попап с адресом, режимом работы, очередью
- Тап по списку → центрирует карту на выбранной точке
3. Список курсов валют (Exchange Rates)**
Назначение: Полная таблица курсов.
Элементы интерфейса:
- Секции:
- Валюты (USD, EUR, CNY и т.д.)
- Криптовалюты (BTC, ETH – если есть API)
- Драгметаллы (золото, серебро)
- Сортировка: по названию/изменению за 24ч
- Поиск по названию валюты
- Кнопка "Обновить" (ручной fetch данных) либо pull to refresh
Дополнительно:*
- График изменения курса (при тапе на валюту)
- Возможность добавить валюту в избранное
4. Конвертер валют (Currency Converter)
Назначение: Перевод между валютами.
Элементы интерфейса:
- Поля ввода:
- Сумма (с клавиатурой-калькулятором)
- Валюта источника (выпадающий список)
- Валюта назначения (выпадающий список)
- Результат (обновляется в реальном времени)
- Кнопка "Поменять местами" (быстрый swap валют)
- История конвертаций** (сохранённые расчёты)
5. Детализация точки (ATM/Branch Details) – ультра-опциланльно
Назначение: Вся информация о выбранном банкомате или отделении.
Элементы интерфейса:
- Фото места (если есть Google Places API, или из яндекса если получится достать)
- Адрес, режим работы, контакты
- Услуги:
- Обмен валют
- Кредиты
- Оплата ЖКХ
- Кнопки действий:
- Построить маршрут (Яндекс.Карты/Google Maps)
- Позвонить
- Скопировать адрес
Технические детали
Версия iOS. Выбирайте между 16-18. Это сейчас самые актуальные в разработке.
Стек: Swift + UIKit
Хранение данных: UserDefaults + CoreData / Realm
Архитектура: MVC, MVP
API для банковских данных
1. Курсы валют:
- ЦБ РФ: https://www.cbr-xml-daily.ru/daily_json.js
- NBRB (Беларусь): https://api.nbrb.by/exrates/rates?periodicity=0
- OpenExchangeRates: [требуется API-ключ](https://openexchangerates.org/)
2. Банкоматы и отделения:
- Google Places API (поиск по запросу "ATM" или банка)
- 2GIS API (для СНГ) (https://dev.2gis.com/ru/map/geo/search)
3. Драгметаллы:
- LBMA (золото/серебро): https://www.goldapi.io/api` (есть бесплатный тариф)
Стек технологий
- Карты: Google Maps SDK / Yandex Maps / MapKit
Дополнительные фичи
- Face ID/Touch ID** для входа
- Push-уведомления** об изменении курсов
- Виджеты для iOS** (курс доллара на главный экран)
Сделан таббар основной снизу экрана. Через API настроил корректное отображение курса валют на текущий день.
Делал первый экран. Сделал кнопки для перехода к основным функциям, поле для ввода значения и лейбла с выводом результатом, отображение графика курса валют и цен драгметалов за неделю по нажатию на курс. Готов конвертер валют красиво и тактильно приятно.
Сделал второй экран в виде карты с точками банкоматов и отделений банков около текущей геолокации со строкой поиска.
Сделал третий экран со списком курсов валют по алфавиту и криптовалют с возможностью добавления/удаления в/из избранного со строкой поиска и отображением по тапу курса за неделю. Плюс сделано обновление данных путем перемещения списка вниз (pull to refresh).
Сделал третий экран с еще одним конвертером валют с кнопкой поменять местами курсы и кнопкой с историей конверсий, а так же строкой ввода значения и вывода результата.
И в конце экран с нереализованными настройками со списком настроек и выходом из аккаунта возможного.
Результат виден на скриншотах и по ссылке на GitHub. В принципе результат описан в решении. Это учебный проект. Предназначен для портфолио. Получилось приложение не сложное без излишеств.