Кросплатформний застосунок для створення та керування VirtualBox VM і зовнішніми SSH-серверами: файли через SFTP, встановлення застосунків, скрипти, моніторинг — і все це із шифруванням SSH-паролів на пристрої ще до відправлення на сервер.
Повний цикл керування інфраструктурою з одного застосунку — від створення віртуальної машини до потокового виведення користувацьких скриптів.
Мобільний застосунок на Expo/React Native спілкується з монолітним backend на NestJS через REST і WebSocket. Усі операції з SSH виконуються через одноразові токени — сервер ніколи не зберігає розшифровані паролі довше одного запиту. Повний розбір архітектури →
flowchart LR
subgraph client["Мобільний клієнт (Expo / React Native)"]
UI["Екрани (expo-router)"]
RQ["React Query"]
CR["Crypto Layer (Argon2id, AES-256-GCM)"]
end
subgraph backend["Backend (NestJS)"]
API["REST API"]
WS["WebSocket Gateway"]
MODS["auth / vps / server-connection /
cloud-provider / custom-scripts"]
end
DB[("MySQL")]
CACHE[("Redis / Valkey")]
VBOX["VirtualBox"]
SSHSRV["Зовнішні SSH-сервери"]
CLOUD["Timeweb / Yandex Cloud API"]
UI --> RQ --> API
UI --> WS
CR -. шифрування credentials .-> API
API --> MODS
WS --> MODS
MODS --> DB
MODS --> CACHE
MODS -- SSH --> VBOX
MODS -- SSH --> SSHSRV
MODS -- REST --> CLOUD Загальна архітектура: клієнт, NestJS API, MySQL, Redis/Valkey, SSH-сервери та VirtualBox
SSH-облікові дані ніколи не залишають пристрій у відкритому вигляді, а кожна операція підтверджується одноразовим підписаним токеном. Усі рівні захисту →
| Мобільний застосунок | |
|---|---|
| Платформа | Expo SDK 54, React Native 0.81 |
| Роутинг | expo-router 6 (файлова маршрутизація) |
| Стан | Zustand + TanStack React Query 5 |
| Криптографія | react-native-quick-crypto, react-native-argon2 |
| Сховище | expo-secure-store, AsyncStorage |
| Backend | |
|---|---|
| Фреймворк | NestJS 11, TypeScript |
| База даних | MySQL + Prisma 6 |
| Кеш / черги | Redis (Valkey) через ioredis |
| SSH / SFTP | ssh2, ssh2-sftp-client |
| Автентифікація | Passport JWT, Google/Yandex OAuth, MAX Bot |
Кілька екранів застосунку. Переглянути всі 15 знімків →