Skip to content

Repository files navigation

💱 Currency Converter

Build Linux Build Windows Lint & Type Check Latest Release Downloads License: MIT

Современное кроссплатформенное приложение для конвертации валют

Построено на Tauri (Rust) и SvelteKit (Svelte)

🚀 Быстрый старт📦 Скачать🛠 Разработка📝 API


✨ Возможности

Функция Описание
🔄 Двусторонняя конвертация Вводите в любое поле, результат обновляется в реальном времени
🌍 50+ валют Основные мировые, азиатские, американские, европейские и страны СНГ
Умный кеш Бекенд (5 мин TTL), фронтенд (200 последних конверсий)
🌓 Светлая/темная тема Автоматическое переключение с сохранением
📡 Работает без интернета Dev режим с mock данными
💻 Кроссплатформенность Windows (.exe, .msi), Linux (AppImage), macOS
⚙️ Быстрая разработка Debounce 200ms, реактивный Svelte, async Rust
🎨 Красивый UI Логотипы валют, спинер загрузки, индикатор кеша

🚀 Быстрый старт

Требования

  • Node.js 18+ и npm
  • Rust и cargo

Установка и запуск

# 1. Клонируйте репозиторий
git clone https://github.com/CubicArnament/tauri-currency-converter.git
cd tauri-currency-converter

# 2. Установите зависимости
npm install

# 3. Запустите dev сервер
npm run dev

# 4. Или с Tauri бекендом (полное приложение)
npm run tauri:dev

Приложение откроется на http://localhost:1420.


📦 Скачать

Готовые сборки

Скачайте последнюю версию для вашей платформы. Все сборки автоматически создаются при публикации новой версии:

Платформа Формат Ссылка Пакет
Windows .exe (Портативный) GitHub Releases Download EXE
Windows .msi (Инсталлятор) GitHub Releases Download MSI
Linux .AppImage GitHub Releases Download AppImage
Linux .deb (Debian) GitHub Releases Download DEB

Установка на Linux

AppImage (универсальный способ):

# Скачайте AppImage
chmod +x currency-converter-v*.AppImage
./currency-converter-v*.AppImage

DEB пакет (для Debian/Ubuntu/Linux Mint):

# Скачайте .deb файл и установите
sudo apt install ./currency-converter-v*.deb

# Или через dpkg
sudo dpkg -i currency-converter-v*.deb
sudo apt install -f  # Install dependencies if needed

Установка на Windows

Запустите .exe или .msi инсталлятор напрямую.


🌍 Поддерживаемые валюты

Нажмите для развертывания (50+ валют)
Регион Валюты
Основные (5) USD, EUR, GBP, JPY, CHF
Азия-Тихий океан (9) CNY, INR, SGD, HKD, AUD, NZD, THB, MYR, IDR
Америки (5) CAD, MXN, BRL, ARS, CLP
Европа (7) SEK, NOK, DKK, PLN, CZK, HUF, RON
Африка & Ближний Восток (4) ZAR, SAR, AED, TRY
Страны СНГ (9) RUB, KZT, UAH, BYN, AMD, GEL, UZS, KGS, TJS

📦 Сборка

Для Windows

npm run build:windows-msvc

Результат:

  • src-tauri/target/release/currency-converter.exe — портативный exe
  • src-tauri/target/release/bundle/msi/currency-converter.msi — инсталлятор

Для Linux

npm run build:linux-clang

Результат: src-tauri/target/release/bundle/appimage/currency-converter.AppImage

Для веба

npm run build

Результат: Статические файлы в ./build/


💾 Кеширование

Тип Место TTL Размер Статус
Бекенд Rust в памяти 5 минут до 1000 записей Автоматический
Фронтенд localStorage нет до 200 конверсий Ручное очищение

Кеш автоматически отмечается как (cached) в результатах.


🛠 Разработка

Структура проекта

tauri-currency-converter/
├── src/                       # SvelteKit фронтенд
│   ├── routes/
│   │   ├── +layout.svelte     # Главный layout
│   │   ├── +page.svelte       # Главная страница
│   │   └── +page.css          # Стили
│   └── app.css                # Глобальные стили
│
├── src-tauri/                 # Tauri/Rust бекенд
│   ├── src/
│   │   ├── lib.rs             # API команды
│   │   └── main.rs            # Entry point
│   ├── Cargo.toml             # Rust зависимости
│   └── tauri.conf.json        # Tauri конфиг
│
├── scripts/                   # Скрипты сборки
│   ├── build-windows-msvc.ps1
│   └── build-linux-clang.sh
│
├── .github/workflows/         # CI/CD пайплайн��
│   ├── build-linux.yml        # Linux сборка
│   ├── build-windows.yml      # Windows сборка
│   ├── lint.yml               # Линтинг и проверки
│   ├── pr-checks.yml          # PR проверки
│   └── release.yml            # Релиз
│
└── package.json               # Node.js зависимости

Скрипты разработки

npm run dev              # Dev сервер SvelteKit (http://localhost:1420)
npm run tauri:dev        # Dev приложение с Tauri (полное)
npm run build            # Сборка фронтенда
npm run check            # Проверка типов TypeScript/Svelte
npm run check:watch      # Проверка типов (watch mode)
npm run lint             # Линтинг кода
npm run format           # Форматирование кода

Инструкции для разработки

Полные инструкции по разработке и сборке для Windows и Linux см. в DEVELOPMENT.md.


🔧 Технологический стек

Слой Технология Версия
Фронтенд SvelteKit, Svelte 5, Vite, TypeScript Latest
Бекенд Tauri 2, Rust, async/await Latest
API exchangerate-api.com v4
UI CSS переменные, responsive design
Сборка npm, cargo, GitHub Actions

🎨 Особенности реализации

⚡ Реактивность

  • Двусторонний binding между полями ввода
  • Debounce 200ms для уменьшения API запросов
  • Мгновенное обновление при переключении валют

🚀 Производительность

  • Встроенный кеш Rust с TTL 5 минут
  • localStorage кеш на фронтенде (200 последних конверсий)
  • Минимизированные CSS и JavaScript
  • Lazy loading компонентов

👥 User Experience

  • Красивый спинер при загрузке
  • Индикатор (cached) для кешированных результатов
  • Переключение светлой/темной темы
  • Форматирование чисел с Intl.NumberFormat
  • Валидация ввода в реальном времени

📝 API

Бекенд команды (Rust/Tauri)

// Получить список доступных валют с названиями
#[tauri::command]
async fn get_currencies() -> Result<HashMap<String, String>, String>

// Конвертировать валюту с кешированием
#[tauri::command]
async fn convert_currency(
    base_currency: String,
    target_currency: String,
    amount: f64
) -> Result<f64, String>

Внешний API

exchangerate-api.com v4:

GET https://api.exchangerate-api.com/v4/latest/{CURRENCY}

Response:
{
  "rates": {
    "USD": 1.0,
    "EUR": 0.92,
    ...
  }
}

🐛 Отладка

"Tauri not available" в dev режиме

Это нормально! Приложение использует mock данные:

  • 50+ валют
  • Фиксированный курс: 1 USD ≈ 0.92 EUR

Используйте npm run tauri:dev для полного приложения с реальным API.

Решение проблем

Подробнее см. в DEVELOPMENT.md.


⚙️ CI/CD Pipeline

Проект использует GitHub Actions для автоматической сборки и релизов:

Workflows

Workflow Триггер Платформа Результат Релиз
build-linux Push / PR / Tag Linux AppImage (30 дн) ✓ На tag
build-windows Push / PR / Tag Windows EXE + MSI (30 дн) ✗ Только artifact
lint Push / PR Код качество
pr-checks Pull Request Полные проверки
release Tag v* GitHub Release ✓ На tag

Быстрый пример

# Автоматическая сборка Linux + Windows (артефакты)
git push origin main

# Создать релиз (сборка + GitHub Release с AppImage/EXE/MSI)
git tag v0.1.0
git push origin v0.1.0

Статусы и артефакты: https://github.com/CubicArnament/tauri-currency-converter/actions


📄 Лицензия

MIT — используйте свободно в коммерческих и личных проектах.

Подробнее см. LICENSE.md


🔗 Полезные ссылки


Создано с ❤️ на Rust, Svelte и Tauri

⬆ Вернуться в начало

About

Utilitarian converter on Tauri (Rust + WEB Stelve) in the GNOME minimalist style

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages