Конвертер валют на основе официальных курсов ЦБ РФ
Go реализация проекта CurRate с современной архитектурой, XML API и desktop UI
CurRate-Go - это высокопроизводительный конвертер валют, написанный на Go, который получает актуальные курсы валют с официального XML API Центрального Банка России. Проект является функциональной миграцией Python-версии CurRate v3.0.0 с улучшенной архитектурой и производительностью.
- 🚀 Высокая производительность: ~5-10 мс на запрос (в 10 раз быстрее HTML парсинга)
- 🔒 Надежность: Официальный XML API ЦБ РФ вместо HTML scraping
- 💾 Умное кэширование: LRU кэш с TTL для минимизации запросов
- 🔄 Retry логика: Exponential backoff (1s, 2s, 4s) для отказоустойчивости
- 🌐 Поддержка кодировок: Автоматическая конвертация windows-1251 → UTF-8
- 🧪 >90% покрытие тестами: Unit + интеграционные тесты
- 📱 Современный UI: Desktop приложение на Wails v2 с карточным дизайном Windows 11
# Клонировать репозиторий
git clone https://github.com/bivlked/CurRate-Go.git
cd CurRate-Go
# Установить зависимости
go mod download
# Запустить тесты
go test ./...
# Запустить desktop приложение (режим разработки)
wails dev
# Собрать desktop приложение для production
wails build- Запустите приложение:
wails dev(режим разработки) илиbuild/bin/CurRate.exe(production) - Выберите дату в календаре или введите вручную (формат: ДД.ММ.ГГГГ)
- Выберите валюту: USD или EUR
- Введите сумму для конвертации
- Нажмите "Конвертировать"
- Результат отобразится в формате:
"80 722,00 руб. ($1 000,00 по курсу 80,7220)" - Используйте кнопку "Копировать в буфер" для копирования результата
⚠️ Примечание о Windows SmartScreen: При первом запуске Windows может показать предупреждение "Windows защитила ваш компьютер". Это нормально для новых приложений без коммерческой подписи. Нажмите "Подробнее" → "Выполнить в любом случае". Приложение безопасно — исходный код полностью открыт.
Подробнее: См. Руководство пользователя
💡 Примечание для разработчиков: CurRate-Go - это desktop приложение. Для использования программы установите
.exeфайл или запустите черезwails dev. Если вы хотите расширить функциональность или создать свою версию, см. Руководство разработчика и API документацию.
CurRate-Go Desktop - это современное настольное приложение с графическим интерфейсом, построенное на Wails v2.11.0.
- 🎨 Интуитивный интерфейс - простой и понятный дизайн в одном окне
- 📅 Визуальный календарь - выбор даты с автоматическим выделением выходных красным цветом
- ⌨️ Ручной ввод даты - альтернатива календарю для быстрого ввода
- 💱 Выбор валюты - радиокнопки для USD/EUR
- 📋 Копирование в буфер - результат одним кликом
- ⚡ Мгновенные результаты - благодаря LRU кэшу
- 💾 Компактный размер - всего ~8-10 МБ (с UPX компрессией)
- ℹ️ Информация о программе - модальное окно с информацией об авторе и версии
- ⭐ Обратная связь - возможность "послать звезду" автору через Telegram
Статус: ✅ Реализовано и готово к использованию
Документация:
- Руководство пользователя - Как использовать приложение
- Руководство разработчика - Как разрабатывать и собирать
- API документация - Справочник по API
- Архитектура GUI - Архитектурный дизайн
Полная техническая документация доступна в папке docs/:
- Архитектура - Архитектура системы, слои, потоки данных
- Производительность - Benchmarks, оптимизации, сравнение
- Тестирование - Покрытие тестами, запуск тестов, best practices
- Roadmap - Планы развития и этапы разработки
- Техническое задание - Требования и спецификации
- Технологический стек - Технологии и зависимости
- Архитектурный дизайн - Детальная архитектура
- План разработки - Этапы и прогресс
- Руководство пользователя - Как использовать приложение
- Руководство разработчика - Как разрабатывать и собирать
- API документация - Справочник API (Go ↔ JavaScript)
- Архитектура GUI - Архитектурный дизайн GUI
- SignPath Code Signing - Настройка подписи кода через SignPath Foundation
Мы рады вашему вкладу! См. CONTRIBUTING.md для подробной информации о:
- Настройке окружения разработки
- Стандартах кода (Go, JavaScript)
- Процессе создания Pull Request
- Требованиях к коммитам (Conventional Commits)
- Процессе ревью кода
- Тестировании и покрытии тестами
Быстрый старт для контрибьюторов:
- Fork проекта
- Создайте feature branch (
git checkout -b feature/AmazingFeature) - Внесите изменения и следуйте стандартам проекта
- Запустите тесты (
go test ./...) - Commit изменения с conventional commits (
git commit -m 'feat: add AmazingFeature') - Push в branch (
git push origin feature/AmazingFeature) - Откройте Pull Request
Если вы обнаружили уязвимость безопасности, пожалуйста, не создавайте публичный Issue. Вместо этого ознакомьтесь с нашей Политикой безопасности и сообщите об уязвимости ответственно.
Важно: Мы серьезно относимся к безопасности и благодарим всех, кто сообщает об уязвимостях ответственно.
См. CHANGELOG.md для подробной истории изменений.
Последние обновления:
- v1.2.0 (2026-02-14) - Аудит кода, укрепление надежности, пропагация context.Context
- v1.1.0 (2026-01-11) - Новый UI, модальное окно "О программе", интеграция с Telegram
- v1.0.0 (2025-12-25) - Первый стабильный релиз с полным функционалом
- CurRate (Python) - Оригинальная версия на Python
- ЦБ РФ API - Официальный API курсов валют
Иван Бондарев (@bivlked)
- Компания: New Digital Technologies Ltd.
- Местоположение: Казахстан
- GitHub: @bivlked
Этот проект лицензирован под MIT License - см. файл LICENSE для деталей.
Бесплатная подпись кода предоставлена SignPath Foundation в рамках программы поддержки Open Source проектов.
Политика подписи:
- Все официальные релизы подписаны сертификатом SignPath Foundation
- Подпись создается автоматически в доверенной среде сборки (GitHub Actions)
- Origin verification гарантирует, что подписанные файлы соответствуют исходному коду в репозитории
- Центральный Банк РФ за предоставление публичного API курсов валют
- Wails Team за отличный фреймворк для Go desktop приложений
- Go Team за великолепный язык и стандартную библиотеку
- SignPath Foundation за бесплатную подпись кода для Open Source
- Сообщество Go за вдохновение и best practices
Сделано с ❤️ используя Go

