SocialFeedApp is a lightweight iOS application. It showcases a vertically scrollable video feed similar to TikTok or Instagram Reels, where each video is full-screen and autoplayed when visible.
The app implements the following functionality as outlined in the task:
-
Feed UI
- Displays a scrollable vertical list of short videos.
- Videos are loaded from a mock API (
videos.jsonfile). - Supports pagination: videos are fetched in batches of 20.
-
Each video item includes:
- π€ Creator avatar and name (top-left).
- ποΈ Autoplaying video (centered and full-screen).
- π¬ Action buttons (like, dislike, comment) using SF Symbols.
- π Video description displayed at the bottom.
-
SwiftUI + MVVM + Clean Architecture
Modular and testable project structure following best practices. -
Swift Concurrency (async/await)
Ensures smooth UI updates and scalable data loading. -
Clear Namespace Structure
Organized into API, Domain, and UI layers. -
Local Mock API
Loads video feed from avideos.jsonfile bundled within the app. -
Unit Testing
ViewModel and UseCase layers are covered with unit tests using XCTest.
- Swift 5.9 or later
- Xcode 16.0 or later
- iOS 17.0 or later
-
Clone the repository:
git clone git@github.com:usman-pucit/SocialFeedApp.git cd SocialFeedAppOr download the ZIP file and extract it manually.
-
Open the project in Xcode:
open SocialFeedApp.xcodeproj
(Use
SocialFeedApp.xcworkspaceinstead if you add CocoaPods or SwiftPM later.) -
Build and run the project using a simulator or real device.
-
Make sure your device or simulator is connected to the internet if you later switch from local to remote video URLs.
Run unit tests by selecting the SocialFeedAppTests scheme and pressing Cmd + U in Xcode.