Skip to content

bivlked/CurRate-Go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

188 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

CurRate-Go 🔄

Конвертер валют на основе официальных курсов ЦБ РФ
Go реализация проекта CurRate с современной архитектурой, XML API и desktop UI

Build Tests Lint Security Release Downloads Go Version License Coverage Go Report Card

Конвертация USD    Конвертация EUR

📋 О проекте

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

Первый запуск (GUI)

  1. Запустите приложение: wails dev (режим разработки) или build/bin/CurRate.exe (production)
  2. Выберите дату в календаре или введите вручную (формат: ДД.ММ.ГГГГ)
  3. Выберите валюту: USD или EUR
  4. Введите сумму для конвертации
  5. Нажмите "Конвертировать"
  6. Результат отобразится в формате: "80 722,00 руб. ($1 000,00 по курсу 80,7220)"
  7. Используйте кнопку "Копировать в буфер" для копирования результата

⚠️ Примечание о Windows SmartScreen: При первом запуске Windows может показать предупреждение "Windows защитила ваш компьютер". Это нормально для новых приложений без коммерческой подписи. Нажмите "Подробнее""Выполнить в любом случае". Приложение безопасно — исходный код полностью открыт.

Подробнее: См. Руководство пользователя

💡 Примечание для разработчиков: CurRate-Go - это desktop приложение. Для использования программы установите .exe файл или запустите через wails dev. Если вы хотите расширить функциональность или создать свою версию, см. Руководство разработчика и API документацию.


🖥️ Desktop GUI

CurRate-Go Desktop - это современное настольное приложение с графическим интерфейсом, построенное на Wails v2.11.0.

Ключевые особенности GUI

  • 🎨 Интуитивный интерфейс - простой и понятный дизайн в одном окне
  • 📅 Визуальный календарь - выбор даты с автоматическим выделением выходных красным цветом
  • ⌨️ Ручной ввод даты - альтернатива календарю для быстрого ввода
  • 💱 Выбор валюты - радиокнопки для USD/EUR
  • 📋 Копирование в буфер - результат одним кликом
  • Мгновенные результаты - благодаря LRU кэшу
  • 💾 Компактный размер - всего ~8-10 МБ (с UPX компрессией)
  • ℹ️ Информация о программе - модальное окно с информацией об авторе и версии
  • Обратная связь - возможность "послать звезду" автору через Telegram

Статус: ✅ Реализовано и готово к использованию

Документация:


📚 Документация

Полная техническая документация доступна в папке docs/:

Основные документы

Backend & Core

Desktop GUI (Wails v2)

Безопасность и подпись кода


🤝 Contributing

Мы рады вашему вкладу! См. CONTRIBUTING.md для подробной информации о:

  • Настройке окружения разработки
  • Стандартах кода (Go, JavaScript)
  • Процессе создания Pull Request
  • Требованиях к коммитам (Conventional Commits)
  • Процессе ревью кода
  • Тестировании и покрытии тестами

Быстрый старт для контрибьюторов:

  1. Fork проекта
  2. Создайте feature branch (git checkout -b feature/AmazingFeature)
  3. Внесите изменения и следуйте стандартам проекта
  4. Запустите тесты (go test ./...)
  5. Commit изменения с conventional commits (git commit -m 'feat: add AmazingFeature')
  6. Push в branch (git push origin feature/AmazingFeature)
  7. Откройте Pull Request

🔒 Security

Если вы обнаружили уязвимость безопасности, пожалуйста, не создавайте публичный 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) - Первый стабильный релиз с полным функционалом

🔗 Связанные проекты


👨‍💻 Автор

Иван Бондарев (@bivlked)

  • Компания: New Digital Technologies Ltd.
  • Местоположение: Казахстан
  • GitHub: @bivlked

📄 Лицензия

Этот проект лицензирован под MIT License - см. файл LICENSE для деталей.


🔏 Code Signing Policy

Бесплатная подпись кода предоставлена SignPath Foundation в рамках программы поддержки Open Source проектов.

Политика подписи:

  • Все официальные релизы подписаны сертификатом SignPath Foundation
  • Подпись создается автоматически в доверенной среде сборки (GitHub Actions)
  • Origin verification гарантирует, что подписанные файлы соответствуют исходному коду в репозитории

SignPath


🙏 Благодарности

  • Центральный Банк РФ за предоставление публичного API курсов валют
  • Wails Team за отличный фреймворк для Go desktop приложений
  • Go Team за великолепный язык и стандартную библиотеку
  • SignPath Foundation за бесплатную подпись кода для Open Source
  • Сообщество Go за вдохновение и best practices

Сделано с ❤️ используя Go

⬆ Наверх

About

Быстрый и компактный конвертер валют по курсам ЦБ РФ для Windows

Topics

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors