Преминете към основното съдържание

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

Пълен списък на технологиите, използвани в Dictaro, с версии и обосновка за избора.

Десктоп клиент (Rust)

КомпонентТехнологияВерсияОбосновка
ЕзикRustEdition 2024Производителност, безопасност на паметта, нативни Windows/macOS приложения без runtime
GUI frameworkegui / eframe0.31Лек immediate-mode UI, кросплатформен (OpenGL на Windows, Metal/OpenGL на macOS), вграден persistence
System traytray-icon0.19Нативна system tray интеграция за Windows/macOS
Async runtimetokio1.xMulti-threaded async I/O за WebSocket, HTTP и auth flow-ове
WebSocket клиентtokio-tungstenite0.26Async WebSocket с native-tls поддръжка за комуникация с ASR сървъра
HTTP клиентreqwest0.12Заявки към licensing API (refresh, checkout, portal) с rustls-tls
HTTP сървърaxum0.8Временен localhost сървър за OAuth/checkout callback
Междунишкова комуникацияcrossbeam-channel0.5Bounded channels за комуникация между UI и transcription/auth threads
Аудио запис (Windows)wasapi0.22Нативен Windows Audio Session API за 16 kHz mono capture
WAV кодиранеhound3.5Pure Rust WAV encoder/decoder, работи в паметта без I/O
Clipboardarboard3Кросплатформен clipboard (Win32 / NSPasteboard)
JWT валидацияjsonwebtoken9RS256 валидация с embedded public key
Secure storagekeyring3Windows Credential Manager / macOS Keychain за JWT токени
Сериализацияserde / serde_json1JSON (де)сериализация за WebSocket и API комуникация
Дата/часchrono0.4Timezone conversion за device limit retry times
Хеширанеsha20.10SHA-256 за state параметър и machine ID
Локализацияrust-i18n3Compile-time i18n, автоматично определяне на системния език
Определяне на localesys-locale0.3Определяне на системния език на ОС
Версиониранеsemver1Semantic versioning за auto-updater
Self-updateself-replace1.5Подмяна на собствения executable при update
CLI аргументиclap4.5Парсване на command-line аргументи
Regexregex1Hallucination филтър за ASR резултати
URL encodingurlencoding2Кодиране на URL параметри за OAuth flow
Browser openwebbrowser1Отваряне на системния браузър за OAuth/checkout
File lockingfs20.4Single-instance enforcement чрез lock файл
Imageimage0.25PNG support за tray icon и splash screen
Logginglog + env_logger0.4 / 0.11Structured logging с конфигурируеми нива
Lazy initonce_cell1Global static initialization за server secrets и machine ID
Dirsdirs6Кросплатформени пътища за конфигурация и данни
Win32 APIwindows-sys0.59Hotkeys, window messaging, console control, registry
Win resourceswinresource0.1Windows manifest и icon embedding при build

ASR сървър (Python)

КомпонентТехнологияВерсияОбосновка
ЕзикPython3.xБогата ML екосистема, бърз прототип
Web frameworkFastAPI>=0.115Async WebSocket поддръжка, автоматична OpenAPI документация
ASGI сървърUvicorn>=0.30Висока производителност, поддържа WebSocket
ASR моделNVIDIA NeMo>=2.4 (nemo_toolkit[asr])State-of-the-art ASR модели, оптимизирани за NVIDIA GPU
Post-processing LLMvLLMNVIDIA container (26.01-py3)Високопроизводително LLM inference с PagedAttention
LLM моделGemma 3 12B IT-Многоезичен LLM за подобряване на транскрипции
GPU frameworkCUDA12.8.1NVIDIA GPU acceleration за ASR и LLM
Аудио обработкаsoundfile>=0.12Четене на WAV файлове от WebSocket binary данни
HTTP клиентhttpx>=0.27Async HTTP за vLLM API и Data Collector
Метрикиprometheus-client>=0.21Prometheus метрики за мониторинг на ASR performance
NumpynumpylatestЧислени операции за аудио обработка
File uploadpython-multipart>=0.0.9Multipart form parsing (FastAPI dependency)
Container basenvidia/cuda12.8.1-cudnn-runtime-ubuntu22.04CUDA runtime с cuDNN за inference
Reverse proxyNginxalpineОбединява ASR + Dashboard на единен порт, WebSocket proxy

Licensing сървър (Go)

КомпонентТехнологияВерсияОбосновка
ЕзикGo1.23Висока производителност, лесен deployment (единичен binary), отлична concurrency
Web frameworkGin1.10Бърз HTTP router с middleware support
JWTgolang-jwt/v55.2.1RS256 създаване и валидация на JWT токени
Database driverpgx/v55.7.1Висока производителност PostgreSQL driver с connection pooling
Migrationsgolang-migrate/v44.18.1Автоматични database миграции при стартиране
OAuth2golang.org/x/oauth20.30Стандартен OAuth2 клиент за Google, Azure, GitHub
Stripestripe-go/v8181.4.0Официален Stripe SDK за checkout, webhooks, portal
UUIDgoogle/uuid1.6.0UUID v4 генериране за потребители и records
Session cookiesgorilla/securecookie1.1.2Подписани, шифровани session cookies за OAuth state
Rate limitinggolang.org/x/time/rate0.8.0Per-IP token bucket rate limiting
Password hashinggolang.org/x/crypto/bcrypt0.41.0Bcrypt за email/password автентикация
Prometheusclient_golang1.23.2Инструментация на HTTP endpoints и бизнес метрики
Environmentgodotenv1.5.1Зареждане на .env файлове при development

Уебсайт

КомпонентТехнологияВерсияОбосновка
SSG frameworkAstro5.18+Fast static site generation с поддръжка на 25 езика
CSS frameworkTailwind CSS4.2Utility-first CSS, бързо прототипиране
SEOastro-seo1.1Meta tags и Open Graph оптимизация
Sitemap@astrojs/sitemap3.7Автоматично генериране на sitemap.xml
ШрифтовеInter + JetBrains Mono5.xСистемно оптимизирани web fonts
DeploymentCloudflare Pages (Wrangler)4.70+Zero-config deployment, глобален CDN

База данни

КомпонентТехнологияВерсияОбосновка
RDBMSAzure PostgreSQL Flexible Server13+Managed PostgreSQL с automatic backups, B1ms tier
Миграцииgolang-migrateSQL файловеДекларативни schema миграции, изпълняват се при стартиране на сървъра
UUIDgen_random_uuid()Нативен PG 13+UUID генериране без pgcrypto extension (забранен в Azure PostgreSQL)

Мониторинг

КомпонентТехнологияВерсияОбосновка
МетрикиPrometheuslatestTime-series БД за system и application метрики
ВизуализацияGrafanalatestДашборди за метрики и логове, Azure AD SSO
ЛоговеLokilatestLog aggregation, native Grafana интеграция
Log shipperPromtaillatestСъбиране на Docker контейнер логове за Loki
Node метрикиNode ExporterlatestCPU, RAM, disk, network метрики
GPU метрикиDCGM Exporter3.3.8-3.6.0NVIDIA Data Center GPU Manager -- utilization, температура, памет

Инфраструктура

КомпонентТехнологияВерсияОбосновка
КонтейнеризацияDocker + Docker ComposelatestИзолация и reproductibility на всички сървърни компоненти
Tunnel / ProxyCloudflare Tunnels (cloudflared)latestСигурен достъп до LAN ресурси без публични IP адреси или отворени портове
DNSCloudflare DNS-Управление на DNS записи с Proxy (CDN + DDoS protection)
Bot protectionCloudflare Turnstile-CAPTCHA-free bot protection на login страницата
CDN / HostingCloudflare Pages-Static site hosting с глобален CDN и автоматичен deploy
Cloud VMAzure Virtual Machine-Licensing API + Monitoring стек, North Europe регион
Container RegistryAzure Container Registry-Docker image storage (dictaroacr.azurecr.io)
Secret storageAzure Key Vault-Централизирано управление на секрети (db-password, JWT keys)
Managed IdentityAzure Managed Identity-Безпарольна автентикация към Azure ресурси

Външни услуги

КомпонентТехнологияПредназначение
ПлащанияStripeАбонаменти (monthly/annual), Checkout, Customer Portal, Webhooks
OAuth - GoogleGoogle Identity PlatformАвтентикация чрез Google акаунт
OAuth - MicrosoftAzure AD / Microsoft IdentityАвтентикация чрез Microsoft акаунт
OAuth - GitHubGitHub OAuth AppsАвтентикация чрез GitHub акаунт
EmailResendTransactional email -- верификация, password reset
Data storageAzure Blob StorageСъхранение на ASR записи (asr-recordings container)
TelemetryAzure Log AnalyticsASR request метрики и анализ

Диаграма на зависимостите между компонентите