Files
IdP/tauri_app
2026-07-02 16:40:04 +03:00
..
2026-07-02 16:40:04 +03:00
2026-06-26 13:56:54 +03:00
2026-06-26 17:31:05 +03:00
2026-06-26 13:56:54 +03:00
2026-06-26 13:56:54 +03:00
2026-07-02 16:40:04 +03:00
2026-06-26 13:56:54 +03:00
2026-06-26 13:56:54 +03:00

Lendry ID Super App

Tauri v2 приложение для macOS, iOS и Android. Использует тот же React/Tailwind/shadcn UI стиль, что и apps/frontend, через Vite alias:

'@': '../apps/frontend'

Запуск

npm install
npm --workspace @lendry/tauri-app run tauri:dev

Web build

npm --workspace @lendry/tauri-app run build

Mobile bootstrap

npm --workspace @lendry/tauri-app run android:init
npm --workspace @lendry/tauri-app run ios:init

После генерации проверьте src-tauri/mobile-permissions.md и добавьте camera permissions, если CLI не внёс их автоматически.

Docker APK build

Сборка подписанного release APK через install.sh (Docker + Android SDK + release keystore):

./install.sh --build-apk

Или пункт 12 в интерактивном меню ./install.sh.

Готовый файл:

apps/frontend/public/downloads/lendry-id.apk

Keystore и пароли создаются автоматически при первой сборке и сохраняются в tauri_app/.secrets/ (не коммитятся в git).

Если сборка падает с KeytoolException / not properly padded, keystore и пароли рассинхронизированы. Пересоздайте их:

rm -rf tauri_app/.secrets
./install.sh --build-apk

Или одной командой:

ANDROID_KEYSTORE_FORCE_REGENERATE=1 ./install.sh --build-apk

После этого кнопка «Скачать приложение» на странице входа скачивает APK через:

/download/android

Собрать только через Docker-образ (без install.sh):

docker build -f tauri_app/Dockerfile.apk -t lendry-id-tauri-apk-builder .
mkdir -p apps/frontend/public/downloads tauri_app/.secrets
docker run --rm \
  -v "$(pwd)/apps/frontend/public/downloads:/out" \
  -v "$(pwd)/tauri_app/.secrets:/workspace/tauri_app/.secrets" \
  -e PUBLIC_API_URL=https://sso.example.ru/idp-api \
  -e PUBLIC_FRONTEND_URL=https://sso.example.ru \
  lendry-id-tauri-apk-builder

Переменные окружения

VITE_API_URL=https://sso.example.ru/idp-api
VITE_FRONTEND_URL=https://sso.example.ru

Реализованные модули

  • Chats: wrapper существующего web UI /family, чтобы не дублировать messenger.
  • Security: QR scanner + approve /auth/advanced/qr/session/:sessionId/approve, список сессий и revoke.
  • Authenticator: offline TOTP RFC 6238 с хранением seeds в tauri-plugin-stronghold.