70 lines
3.2 KiB
Markdown
70 lines
3.2 KiB
Markdown
|
|
# Montana iOS App
|
|||
|
|
|
|||
|
|
iOS реализация Montana App — персональный интернет в одном приложении (кошелёк, мессенджер, каналы, контакты, профиль, ИИ-агент Юнона, браузер).
|
|||
|
|
|
|||
|
|
**Версия спеки:** Montana App v3.11.0 (2026-05-01).
|
|||
|
|
**Версия приложения:** v0.1.0 (Foundation MVP).
|
|||
|
|
|
|||
|
|
## Архитектура
|
|||
|
|
|
|||
|
|
- **Swift 5.9+ + SwiftUI**, iOS 16.0+, iPhone-only (TARGETED_DEVICE_FAMILY=1)
|
|||
|
|
- **Криптография через FFI к Rust** — `mt-mnemonic` + `mt-crypto` из workspace `efir369999/Montana` (byte-exact conformance с протоколом, тот же ML-DSA-65 / ML-KEM-768 / SHA-256 что и узел)
|
|||
|
|
- **Project структура через XcodeGen** (`project.yml`) — детерминированная сборка `.xcodeproj`
|
|||
|
|
|
|||
|
|
## Сборка
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
brew install xcodegen
|
|||
|
|
cd MontanaApp
|
|||
|
|
xcodegen generate
|
|||
|
|
open MontanaApp.xcodeproj
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
Затем в Xcode выбрать iOS Simulator → Run.
|
|||
|
|
|
|||
|
|
## Структура
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
MontanaApp/
|
|||
|
|
├── project.yml — XcodeGen project definition
|
|||
|
|
├── README.md
|
|||
|
|
├── LICENSE
|
|||
|
|
├── Sources/MontanaApp/
|
|||
|
|
│ ├── App/ — entry point (SwiftUI App)
|
|||
|
|
│ ├── Identity/ — мнемоника + master_seed + derived keys
|
|||
|
|
│ ├── Crypto/ — Swift wrapper над RustBridge
|
|||
|
|
│ ├── Wallet/ — Transfer + balance + history
|
|||
|
|
│ ├── Messenger/ — Double Ratchet PQ
|
|||
|
|
│ ├── Contacts/ — QR + petname-ы
|
|||
|
|
│ ├── Profile/ — ProfileBlob
|
|||
|
|
│ └── UI/
|
|||
|
|
│ ├── Onboarding/ — welcome + mnemonic generation
|
|||
|
|
│ └── Components/ — переиспользуемые view-компоненты
|
|||
|
|
├── Tests/MontanaAppTests/
|
|||
|
|
├── Resources/ — Info.plist, Assets.xcassets
|
|||
|
|
├── RustBridge/ — FFI к mt-mnemonic / mt-crypto
|
|||
|
|
└── docs/ — заметки реализации
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## Roadmap
|
|||
|
|
|
|||
|
|
- [x] **Phase 0** — Project structure + XcodeGen
|
|||
|
|
- [ ] **Phase 1** — Rust→iOS bridge (xcframework build для mt-mnemonic + mt-crypto)
|
|||
|
|
- [ ] **Phase 2** — Identity module (mnemonic + derive keys)
|
|||
|
|
- [ ] **Phase 3** — Onboarding UI (welcome → mnemonic create/import → identity)
|
|||
|
|
- [ ] **Phase 4** — Wallet (Transfer + balance)
|
|||
|
|
- [ ] **Phase 5** — Messenger (Double Ratchet PQ)
|
|||
|
|
- [ ] **Phase 6** — Channels (Content Layer reader)
|
|||
|
|
- [ ] **Phase 7** — Contacts (QR + petnames)
|
|||
|
|
- [ ] **Phase 8** — Profile (ProfileBlob)
|
|||
|
|
- [ ] **Phase 9** — Junona (ИИ-агент + sandbox + permissions)
|
|||
|
|
- [ ] **Phase 10** — Browser (траффик-маскировка)
|
|||
|
|
|
|||
|
|
## Лицензия
|
|||
|
|
|
|||
|
|
Apache-2.0 OR MIT (то же что и Rust workspace efir369999/Montana).
|
|||
|
|
|
|||
|
|
## Связанные репозитории
|
|||
|
|
|
|||
|
|
- [efir369999/Montana](https://github.com/efir369999/Montana) — спецификация протокола + Rust reference implementation узла
|