Современное веб-приложение для конвертации валют с поддержкой темы, работающее как PWA (Progressive Web App).
- ✨ Vue 3 с Composition API и
<script setup> - 📝 TypeScript для типизации
- 🎨 Tailwind CSS для стилизации
- 🚀 Vite для быстрой разработки
- 🍃 Three.js для 3D фонового эффекта с частицами дыма
- 📱 PWA поддержка для офлайн-использования
- 🌙 Dark mode с автоматическим переключением
- 🔄 Real-time курсы валют через API ЦБ РФ
src/
├── components/ # Vue компоненты
│ ├── P2PCalc.vue # Главный компонент
│ └── ui/ # UI компоненты
│ ├── CurrencyInput.vue
│ └── CurrencyDisplay.vue
├── composables/ # Vue composition functions
│ └── useCurrency.ts # Логика работы с валютами
├── services/ # Business logic сервисы
│ └── exchangeRateService.ts
├── types/ # TypeScript типы
│ └── index.ts
├── assets/ # Статические файлы
│ ├── main.css
│ └── logo.svg
├── animate.ts # Three.js анимация
├── main.ts # Точка входа
├── App.vue # Root компонент
└── env.d.ts # Environment типы
npm installnpm run devОткройте http://localhost:5173 в браузере.
npm run buildnpm run type-checknpm run lint # ESLint + Prettier
npm run format # Только Prettier| Команда | Описание |
|---|---|
| npm run dev | Запуск dev сервера |
| npm run build | Сборка для продакшена |
| npm run preview | Просмотр собранного проекта |
| npm run lint | Линтирование и форматирование |
| npm run format | Форматирование кода |
| npm run type-check | Проверка TypeScript типов |
- Frontend Framework: Vue 3 + TypeScript
- Build Tool: Vite
- CSS: Tailwind CSS v4
- 3D Graphics: Three.js
- Code Quality: ESLint + Prettier
- PWA: Workbox (via vite-plugin-pwa)
Конфигурация находится в tsconfig.json с алиасом пути @/ для абсолютных импортов.
Конфигурация в eslint.config.js с поддержкой:
- Vue 3 с
<script setup> - TypeScript
- Prettier интеграция
Настройки в .prettierrc.json:
- Без точек с запятой
- Одиночные кавычки
- Ширина строки: 100 символов
- Tab width: 2 пробела
- Создайте файл в
src/components/ - Используйте
<script setup lang="ts">синтаксис - Экспортируйте типы в
src/types/при необходимости
- Создайте composable в
src/composables/или service вsrc/services/ - Используйте TypeScript для типизации
- Импортируйте и используйте в компонентах
Приложение работает как PWA:
- Кешируется для офлайн-использования
- Может быть установлено на главный экран
- Синхронизируется при наличии интернета
Приложение использует API ЦБ РФ для получения курса доллара:
- URL:
https://www.cbr-xml-daily.ru/daily_json.js - Обновляется при загрузке приложения
- Ошибки обрабатываются gracefully
MIT