A native iOS app that helps students in Kazakhstan explore universities, academic programs, and career paths — all in one place. Built with UIKit, VIPER architecture, and fully programmatic UI.
| Area | Details |
|---|---|
| Language | Swift 5.9 |
| UI | UIKit, 100% programmatic — no Storyboards |
| Backend | Live REST API — authentication, universities, programs, professions |
| Architecture | VIPER + MVVM hybrid |
| Layout | UICollectionView Compositional Layout, Diffable Data Sources |
| Networking | Custom API layer with Decodable models |
| Dependencies | SnapKit (Auto Layout), Kingfisher (image loading) via SPM |
| Localization | English + Russian + Kazakh |
| Auth | Email-based registration with code confirmation |
| Minimum Target | iOS 15.0+ |
┌─────────────────────────────────────────────────┐
│ VIPER Module │
│ │
│ View ◀──▶ Presenter ◀──▶ Interactor │
│ │ │ │
│ ▼ ▼ │
│ Router Entities │
└─────────────────────────────────────────────────┘
Modules: Authentication, ProgramDetails, ProgramsByCategory,
Universities, Professions, Sidebar Navigation
Each feature is a self-contained VIPER module with its own View, Interactor, Presenter, Entity, and Router. Dependencies are injected through a central DI container, keeping modules isolated and independently testable.
Backend integration — the app communicates with a live REST API for all data — universities, programs, professions, categories, and authentication. All networking is built on a custom API layer with structured request/response handling and Decodable model parsing. No mock data or hardcoded JSON.
Full VIPER implementation — not just MVC renamed. Each module has strict layer separation with protocols defining every boundary. The Router handles all navigation, the Interactor owns business logic, and the Presenter transforms data for the View.
Compositional Layout + Diffable Data Sources — complex, multi-section collection views with self-sizing cells, category-based browsing, and smooth data updates without manual reloadData calls.
Dependency injection — a custom DI container wires up all modules at launch, making it straightforward to swap implementations for testing or feature flags.
Programmatic UI throughout — every view, constraint, and layout is built in code using SnapKit. No Interface Builder files in the project.
EduConnect/
├── App/
│ ├── AppRouter # Root navigation coordinator
│ └── DependencyContainer # DI setup
├── Modules/
│ ├── Authentication/ # Login, registration, email verification
│ ├── Programs/
│ │ ├── ProgramDetails/ # Program info + related suggestions
│ │ └── ProgramsByCategory/# Category-based browsing
│ ├── Universities/ # University list + details
│ └── Professions/ # Career paths linked to programs
├── UI/
│ ├── Cells/ # Reusable collection view cells
│ ├── Headers/ # Section headers
│ └── Components/ # Shared UI elements
├── Services/
│ ├── API/ # Endpoint definitions
│ └── Networking/ # Request/response handling
└── Resources/
├── Localizations/ # en, kk string files
└── Assets/ # Images, colors
git clone https://github.com/ldevdantesl/EduConnect.git
cd EduConnect
open EduConnect.xcodeproj
# Cmd + R to build and runRequires Xcode 15+ and iOS 16+.
Copyright © 2026 Buzurgmehr Rahimzoda. All rights reserved.
This source code is provided for viewing and educational purposes only. Copying, modifying, distributing, or using this code in commercial products is not permitted without explicit written permission from the author.
Buzurgmehr Rahimzoda — ldevdantesl@gmail.com · GitHub