YADisk is a native iOS client for Yandex Disk cloud storage, engineered with SwiftUI and modern iOS development practices.
The goal of this project was to build a robust file management system that handles complex network states, secure authentication, and offline data persistence. It demonstrates a transition from basic concepts to production-level problem solving.
Instead of simple tutorials, this project tackles real-world constraints:
- Networking Layer: Implemented a scalable network service using Alamofire to handle REST API requests, custom headers, and error mapping.
- Data Persistence: Designed a custom JSON-based caching mechanism to ensure user experience remains smooth even in "Airplane Mode".
- State Management: leveraged
ObservableObjectand@Environmentto maintain a single source of truth across the navigation stack. - Security: Integrated OAuth 2.0 flow via
YandexLoginSDKfor secure token handling.
- 🔐 OAuth 2.0 Authorization: Secure user login flow.
- 📂 Hierarchical Navigation: Recursive file system exploration with deep navigation support.
- ⚡️ Reactive UI: Dynamic interface updates based on network status and data loading states.
- 📶 Reachability Monitoring: Real-time network connection tracking.
- 💾 Offline Mode: Local caching strategy for recently viewed metadata.
- Core: Swift 5.10, SwiftUI, Combine
- Networking: Alamofire, REST API
- Dependencies: CocoaPods / SPM
- Tools: Xcode, Instruments (for leak checks)
- Clone the repository:
git clone https://github.com/yourusername/yadisk.git cd yadisk - Install dependencies:
pod install
- Open the workspace:
open YADisk.xcworkspace
YADisk — это нативный iOS-клиент для облачного хранилища Яндекс Диск, разработанный на SwiftUI.
Проект демонстрирует решение реальных продуктовых задач: работа с нестабильной сетью, безопасная авторизация через OAuth 2.0 и кэширование данных. Основной упор сделан на создание масштабируемой архитектуры и чистый UI.
- Сетевой слой: Реализован на базе Alamofire. Поддерживает REST API запросы, маппинг ошибок и обработку кодов ответов.
- Offline-First подход: Разработана система локального кэширования (JSON-persistence), позволяющая просматривать структуру файлов без доступа к интернету.
- Управление состоянием: Использование паттернов SwiftUI для синхронизации данных между экранами без "Massive View Controller".
- Безопасность: Интеграция
YandexLoginSDKдля безопасного хранения токенов доступа.
- 🔐 Авторизация: Поддержка OAuth 2.0.
- 📂 Файловая система: Навигация по папкам и файлам любой вложенности.
- ⚡️ Реактивный UI: Интерфейс мгновенно реагирует на изменения загрузки и ошибки.
- 📶 Мониторинг сети: Обработка потери соединения (Reachability).
- 💾 Кэш: Просмотр последних загруженных данных в офлайне.
- Core: Swift 5.10, SwiftUI, Combine
- Networking: Alamofire, REST API
- Dependencies: CocoaPods
- Tools: Xcode
