Skip to content

TABURELTER/YADisk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 
 
 

Repository files navigation

YADisk Client ☁️

Swift SwiftUI Platform Architecture License


📸 Preview

YADisk Preview

🇺🇸 English Version

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.

🏛️ Engineering & Architecture

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 ObservableObject and @Environment to maintain a single source of truth across the navigation stack.
  • Security: Integrated OAuth 2.0 flow via YandexLoginSDK for secure token handling.

✨ Key Features

  • 🔐 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.

🛠 Tech Stack

  • Core: Swift 5.10, SwiftUI, Combine
  • Networking: Alamofire, REST API
  • Dependencies: CocoaPods / SPM
  • Tools: Xcode, Instruments (for leak checks)

🚀 Installation

  1. Clone the repository:
    git clone https://github.com/yourusername/yadisk.git
    cd yadisk
  2. Install dependencies:
    pod install
  3. 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

About

Native iOS Yandex Disk client built with SwiftUI. Features OAuth 2.0, Alamofire-powered networking, and a custom offline-first caching engine. Focuses on MVVM architecture and robust state management.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors