Архитектурен преглед на Dictaro
Dictaro е SaaS платформа за гласово въвеждане (voice-to-text), състояща се от десктоп клиент, ASR сървър, licensing сървър, маркетинг сайт и мониторинг инфраструктура.
Диаграма на високо ниво
Описание на компонентите
Десктоп клиент (Rust)
Нативно Windows/macOS приложение, написано на Rust. Предоставя:
- egui GUI -- лек, кросплатформен интерфейс с поддръжка на system tray
- Запис на аудио -- WASAPI (Windows) / CoreAudio (macOS), 16 kHz mono
- Глобални hotkeys -- Win32 API / macOS accessibility за активиране на диктовката
- WebSocket клиент -- изпраща WAV аудио към ASR сървъра чрез tokio-tungstenite
- Auth Manager -- OAuth browser redirect flow с временен localhost axum сървър
- Keyring -- съхранение на JWT токени в Windows Credential Manager / macOS Keychain
- i18n -- локализация чрез rust-i18n с автоматично определяне на системния език
- Auto-updater -- самоактуализация чрез semver + self-replace
ASR сървър (Python / NVIDIA DGX Spark)
Работи на NVIDIA DGX Spark (10.42.9.37, LAN only), достъпен през Cloudflare Tunnel. Компоненти:
- FastAPI WebSocket сървър -- приема аудио, връща транскрипция
- NVIDIA NeMo ASR -- speech recognition модел чрез nemo_toolkit
- vLLM -- опционален post-processing с Gemma 3 12B IT за подобряване на текста (BYOK Pro feature)
- Nginx proxy -- обединява ASR и Dashboard на порт 8765
- Data Collector -- записва аудио в Azure Blob Storage и изпраща метрики в Log Analytics
- Monitoring exporters -- Node Exporter, DCGM Exporter (GPU), Promtail
Licensing сървър (Go / Azure VM)
Go приложение с Gin framework, работещо на Azure VM dictaro-vm (northeurope). Отговаря за:
- OAuth2 автентикация -- Google, Azure AD, GitHub + email/password
- JWT RS256 издаване и валидация -- access tokens с конфигурируем expiry
- Stripe интеграция -- checkout sessions, webhooks, customer portal
- Usage tracking и quota -- записване на употреба, rolling quota цикли, cooldown механизъм
- Email -- верификация и password reset чрез Resend API
- Prometheus метрики -- вътрешен metrics сървър на порт 9090
Monitoring стек (Azure VM)
Споделя Azure VM с licensing сървъра. Включва:
- Prometheus -- scrape на метрики от licensing API, ASR сървъра (през Cloudflare Tunnel), node exporters
- Grafana -- визуализация, достъпна на monitoring.dictaro.ai чрез Cloudflare Tunnel
- Loki -- агрегация на логове от всички компоненти чрез Promtail
- Cloudflare Tunnels -- dictaro-monitoring (Grafana), dictaro-loki (Loki ingest)
Уебсайт (Astro)
Маркетинг сайт на dictaro.ai, хостван на Cloudflare Pages:
- Astro 5 -- static site generator с поддръжка на 25 езика
- Tailwind CSS 4 -- utility-first CSS framework
- Cloudflare Pages -- автоматичен deploy от Git
Ключови технологии
| Област | Технология | Предназначение |
|---|---|---|
| Десктоп GUI | egui / eframe 0.31 | Кросплатформен UI (OpenGL/Metal) |
| Async runtime | tokio 1.x | Async I/O, WebSocket, HTTP |
| WebSocket | tokio-tungstenite 0.26 | Комуникация с ASR сървъра |
| HTTP клиент | reqwest 0.12 | API заявки към licensing сървъра |
| Аудио запис | WASAPI 0.22 | Windows аудио capture |
| ASR модел | NVIDIA NeMo (nemo_toolkit 2.4+) | Speech-to-text |
| Post-processing | vLLM + Gemma 3 12B IT | AI подобряване на текста |
| Web framework (API) | Gin 1.10 | HTTP routing, middleware |
| JWT | golang-jwt/v5 + jsonwebtoken 9 | RS256 токени |
| Database | PostgreSQL (Azure) | Потребители, usage, billing |
| DB driver | pgx/v5 | Go PostgreSQL connection pool |
| Payments | Stripe (stripe-go/v81) | Абонаменти, checkout, webhooks |
| Resend | Верификация, password reset | |
| Мониторинг | Prometheus + Grafana + Loki | Метрики, логове, дашборди |
| Инфраструктура | Docker, Cloudflare Tunnels | Контейнеризация, secure access |
| Website | Astro 5 + Tailwind 4 | Маркетинг сайт |
| Hosting | Cloudflare Pages, Azure VM | Deployment |