93 lines
2.7 KiB
Markdown
93 lines
2.7 KiB
Markdown
# Lendry ID Super App
|
||
|
||
Tauri v2 приложение для macOS, iOS и Android. Использует тот же React/Tailwind/shadcn UI стиль, что и `apps/frontend`, через Vite alias:
|
||
|
||
```ts
|
||
'@': '../apps/frontend'
|
||
```
|
||
|
||
## Запуск
|
||
|
||
```bash
|
||
npm install
|
||
npm --workspace @lendry/tauri-app run tauri:dev
|
||
```
|
||
|
||
## Web build
|
||
|
||
```bash
|
||
npm --workspace @lendry/tauri-app run build
|
||
```
|
||
|
||
## Mobile bootstrap
|
||
|
||
```bash
|
||
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):
|
||
|
||
```bash
|
||
./install.sh --build-apk
|
||
```
|
||
|
||
Или пункт **12** в интерактивном меню `./install.sh`.
|
||
|
||
Готовый файл:
|
||
|
||
```text
|
||
apps/frontend/public/downloads/lendry-id.apk
|
||
```
|
||
|
||
Keystore и пароли создаются автоматически при первой сборке и сохраняются в `tauri_app/.secrets/` (не коммитятся в git).
|
||
|
||
Если сборка падает с `KeytoolException` / `not properly padded`, keystore и пароли рассинхронизированы. Пересоздайте их:
|
||
|
||
```bash
|
||
rm -rf tauri_app/.secrets
|
||
./install.sh --build-apk
|
||
```
|
||
|
||
Или одной командой:
|
||
|
||
```bash
|
||
ANDROID_KEYSTORE_FORCE_REGENERATE=1 ./install.sh --build-apk
|
||
```
|
||
|
||
После этого кнопка «Скачать приложение» на странице входа скачивает APK через:
|
||
|
||
```text
|
||
/download/android
|
||
```
|
||
|
||
Собрать только через Docker-образ (без install.sh):
|
||
|
||
```bash
|
||
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
|
||
```
|
||
|
||
## Переменные окружения
|
||
|
||
```bash
|
||
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`.
|