This iOS application simulates the AirFi News Panel — a secure internal platform for managing article submissions and approvals. Built using Swift, Core Data, and MVVM, it emphasizes clean architecture, offline-first capabilities, and professional UI practices.
- 🔒 Login Flow for
AuthorandReviewerroles - ✍️ Author Panel to:
- View your own articles
- Sync articles to server (mocked)
- ✅ Reviewer Panel to:
- View unapproved articles grouped by author
- Select & approve articles
- Persist approval state locally
- 🔁 Offline-First Design
- All data stored in Core Data
- No external APIs or backend — purely mock-driven
- 🔃 Pagination on Reviewer side for performance
- 📱 Fully adaptive UI built with UIKit and AutoLayout
- MVVM with Service + Repository layers
- Core Data for persistent local storage
- MockAPIService to simulate network sync
- AutoSyncManager to sync data only when local changes exist
AirFiNewsPanel/
│
├── Models/
│ ├── ArticleMetadata
│ └── ArticleDetail
│
├── DTOs/
│ ├── ArticleMetadataDTO.swift
│ └── ArticleDetailDTO.swift
│
├── Services/
│ └── MockAPIService.swift
│
├── Repository/
│ └── ArticleRepository.swift
│
├── ViewModels/
│ ├── AuthorNewsViewModel.swift
│ └── ReviewerNewsViewModel.swift
│
├── Views/
│ ├── AuthorNewsViewController.swift
│ ├── ReviewerNewsViewController.swift
│ └── ReviewerNewsTableViewCell.swift
- ✅ Verify login and role-based redirection
- ✅ Test Author sync functionality
- ✅ Scroll and approve articles as Reviewer
- ✅ Ensure state persists across app launches
- ✅ Check pagination & UI rendering for large datasets
-
Clone the repo
git clone https://github.com/your-username/AirFiNewsPanel.git
-
Open in Xcode 15+
-
Run on simulator or device
- Only articles with new local changes are synced.
- Approved articles are filtered out per reviewer’s name.
approvedByis stored as[String]in Core Data using a value transformer.
Akash Razdan
LinkedIn • iOS Developer
This project was built as part of a professional take-home assignment for AirFi. It follows industry practices in architecture, code quality, and design. Structured to support discussion in interviews and system design rounds.