Flutter-клиент для VPN-сервиса на базе Xray / VLESS Reality.
- Flutter 3.22+
flutter_v2ray— VPN-туннельgo_router— навигацияdio— HTTP + кукиflutter_animate— анимации- YooKassa — приём платежей
cp lib/config/app_config.dart lib/config/app_config.local.dartОткрой app_config.local.dart и заполни:
const kBase = 'https://your-server.com'; // URL бэкенда
const kScheme = 'yourapp'; // deep-link схема
const kBotId = '123456789'; // числовой ID Telegram-ботаТакже поправь android/app/src/main/AndroidManifest.xml:
your-server.com→ твой доменyourapp→ твой deep-link scheme (должен совпадать сkScheme)
flutter pub get# Debug APK
flutter build apk --debug
# Release APK (по архитектурам, меньший размер)
flutter build apk --release --split-per-abiAPK: build/app/outputs/flutter-apk/
lib/
├── config/ # app_config.dart — настройки (URL, Bot ID)
├── models/ # UserModel, SubModel, PlanModel, ServerModel
├── services/
│ ├── api.dart # HTTP-клиент (Dio + cookie auth)
│ └── vpn_service.dart
├── screens/
│ ├── auth/ # Email + Telegram OAuth
│ ├── home/ # Главный экран, подключение, серверы
│ ├── payment/ # Оплата подписки (YooKassa)
│ └── profile/
├── router/ # go_router + deep-link обработчики
├── theme/ # Цвета и тёмная тема
└── widgets/ # NsButton, NsField
Приложение ожидает REST API:
| Метод | Путь | Описание |
|---|---|---|
| POST | /api/auth/mobile-login |
Отправить код на email |
| POST | /api/auth/verify-login |
Подтвердить код → сессия |
| GET | /api/auth/tg-mobile/exchange?code= |
Обменять TG OAuth код |
| GET | /api/auth/me |
Текущий пользователь |
| GET | /api/user/subscription |
Подписка и серверы |
| GET | /api/payment/plans |
Список тарифов |
| POST | /api/payment/create |
Создать платёж |
| GET | /api/payment/status/{id} |
Статус платежа |
MIT — см. LICENSE