≈ 5 мин чтения

Сделал себе конвертер валют прямо на рабочий стол Mac

Как я собрал нативный виджет курсов валют для macOS — с нужными парами, графиками, офлайн-значениями и настройками без лишнего.

У меня регулярно одна и та же история: нужно быстро посмотреть, сколько сейчас стоит лира, доллар или евро в рублях.

Конечно, можно открыть Google. Можно зайти в приложение. Можно спросить ChatGPT.

Но если делаешь это несколько раз в день, хочется ещё проще.

Просто посмотреть на рабочий стол.

Так мы и собрали небольшой конвертер валют для macOS.

Началось всё с одной карточки

Первая версия была вообще максимально простой.

Одна валютная пара.
Большой текущий курс.
Изменение за день.
Небольшой график.
Время последнего обновления.

И всё.

Мне не нужен был ещё один финансовый терминал. Хотелось буквально бросить взгляд на экран и сразу увидеть нужную цифру.

Потом добавили ещё одну пару.

Потом ещё.

В итоге сейчас виджет может показывать сразу несколько нужных мне направлений:

  • TRY → RUB
  • USD → RUB
  • EUR → RUB
  • USD → TRY
  • EUR → TRY

И вот примерно в этот момент штука из эксперимента превратилась в то, чем я реально пользуюсь каждый день.

Макап пяти карточек конвертера валют на рабочем столе macOS

На макапе видно всё, что мне нужно от каждой валютной пары:

  • текущий курс;
  • изменение за сегодняшний день;
  • направление движения;
  • небольшой график;
  • время последнего обновления.

То есть отдельное приложение большую часть времени вообще открывать не нужно.

Посмотрел на рабочий стол — закрыл вопрос.

Настройки тоже сделали без фанатизма

Самая опасная часть таких маленьких проектов — начать добавлять функции просто потому, что можем :)

Поэтому старались оставить только то, что действительно полезно.

Можно выбрать нужные валютные пары, отключить лишние, поменять порядок, настроить обновление и внешний вид.

Никаких десяти экранов настроек.

В итоге получилось примерно так:

  • добавление и удаление валютных пар;
  • изменение их порядка;
  • автоматическое обновление курсов;
  • ручное обновление;
  • несколько вариантов расположения карточек;
  • светлая и тёмная темы;
  • сохранение настроек;
  • автоматический запуск вместе с macOS.

Причём если интернет временно пропал, приложение не превращается в тыкву — остаётся последнее успешно полученное значение.

Технически всё довольно просто

Приложение сделали нативным для macOS.

Использовали Swift, SwiftUI и WidgetKit.

То есть это не веб-страница, замаскированная под приложение, а нормальная маленькая macOS-штука, которая ощущается частью системы.

Курсы подтягиваются автоматически.

Пользователю не нужно искать API-ключи, регистрироваться где-то ещё или что-то настраивать перед первым запуском.

Открыл, выбрал валюты — пользуешься.

Но больше всего мне нравится даже не сам виджет

Мне нравится, как сейчас вообще поменялся подход к таким идеям.

Раньше мысль была:

«Прикольно было бы иметь такую штуку».

А потом сразу начиналось:

найти разработчика → объяснить задачу → написать ТЗ → решить, стоит ли вообще тратить на это деньги и время.

И чаще всего маленькая идея на этом и умирала.

Сейчас можно сделать наоборот:

возникло неудобство → описал, как хочу → собрали первую версию → попробовал → поправили → готово.

Не стартап.

Не SaaS.

Не приложение, которое должно захватить App Store.

Просто у меня была маленькая бытовая проблема.

Теперь её нет.

Промпт, с которого можно начать

Если хотите попробовать собрать себе такой же виджет, вот промпт, близкий к тому, с чего можно начинать разработку:

Создай нативное приложение для macOS — минималистичный виджет курсов валют для рабочего стола.

Используй:
- Swift
- SwiftUI
- WidgetKit

Основной сценарий:

Пользователь один раз выбирает нужные валютные пары, после чего постоянно видит их актуальный курс прямо на рабочем столе macOS.

Для просмотра курса не должно требоваться открывать браузер или основное окно приложения.

Для каждой валютной пары отображай:

- флаги и коды валют;
- направление конвертации, например TRY → RUB;
- крупное текущее значение курса;
- изменение курса за текущий день в процентах;
- визуальное направление роста или падения;
- небольшой график изменения курса;
- время последнего обновления.

Нужно поддерживать несколько валютных пар одновременно.

Настройки приложения:

- добавление валютной пары;
- удаление валютной пары;
- включение и отключение отдельных пар;
- изменение порядка пар;
- выбор частоты автоматического обновления;
- ручное обновление;
- выбор количества колонок;
- светлая и тёмная темы;
- сохранение всех настроек между запусками;
- автоматический запуск приложения при входе в macOS.

Работа с данными:

- пользователь не должен самостоятельно получать и вводить API-ключ;
- курсы должны обновляться автоматически;
- последнее успешно полученное значение нужно сохранять локально;
- при временном отсутствии интернета показывай сохранённый курс;
- ошибка сети не должна ломать интерфейс приложения.

Дизайн:

Приложение должно ощущаться как часть macOS.

Минималистичный интерфейс.
Крупное значение курса.
Скруглённые карточки.
Аккуратная типографика.
Минимум визуального шума.

График нужен только для быстрого понимания направления изменения курса.
Не превращай интерфейс в профессиональный торговый терминал.

Разработку веди итерациями.

Сначала создай самую простую рабочую версию:

1. одна валютная пара;
2. получение курса;
3. отображение курса в виджете;
4. сохранение последнего значения.

Убедись, что эта версия стабильно работает.

После этого постепенно добавляй:

- несколько валютных пар;
- дневное изменение;
- графики;
- настройки;
- темы;
- автоматический запуск.

Не усложняй архитектуру заранее.
Каждая новая функция должна появляться только после того, как предыдущая версия работает.

Вот за такие проекты я сейчас особенно люблю разработку с AI.

Не обязательно придумывать большой продукт.

Иногда достаточно заметить что-то, что раздражает тебя каждый день, и сказать:

«А давай просто сделаем нормально».

И сделать.

Сделал себе. Пользуюсь.