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.