JellyTok is a lightweight iOS app built using SwiftUI for iOS 16+, designed for the Jelly iOS Engineering Challenge. It captures creativity, technical capability, and product thinking across a three-tab interface.
- TikTok-style scrollable video feed.
- Fetches videos from a custom API.
- Smooth UX with autoplay and overlay.
- Split-screen view using both front and back cameras.
- 15-second synchronized dual video recording.
- Saves videos locally using
FileManager
. - Navigates to Camera Roll on completion.
- Displays all recorded videos in a grid.
- Supports inline and full-screen playback.
- Neatly organized and accessible from local storage.
- Language: Swift
- Framework: SwiftUI
- Platform: iOS 16+
- Media: AVFoundation
- Storage: FileManager (local storage)
- Networking: URLSession (custom API)
- Architecture: MVVM (feature-based folder structure)
❌ No third-party libraries or SDKs used.
The project is organized by feature folders to support scalability and clarity:
-
Assets.xcassets/
- AccentColor.colorset
- AppIcon.appiconset
- … (other assets)
-
CameraRollTab/
CameraRollView.swift
– UI for video grid/listCameraRollViewModel.swift
– Handles video fetching logicFullscreenPlayerView.swift
– Fullscreen playbackInlineVideoView.swift
– Inline player inside gridProfileHeaderView.swift
– Profile section (optional)StaggeredGridView.swift
– Custom staggered grid layout
-
CameraTab/
CameraView.swift
– Dual camera recording screenDualCameraManager.swift
– Handles front & back camera sessionsDualCameraView.swift
– UI for split-screen camera layout
-
Components/
CustomTabBar.swift
– Custom tab bar UIVideoPlayerView.swift
– Reusable video player component
-
ContentView.swift – Handles tab navigation
-
Extensions/
Bundle+.swift
– App metadata helpersColor+.swift
– Custom app colorsFoundation+.swift
– General-purpose helpers
-
FeedTab/
FeedView.swift
– UI for video feed (scrollable)FeedViewModel.swift
– API handling for feed dataPostOverlayView.swift
– Overlays for each video postVideoPostModel.swift
– Data model for posts
-
JellyTokApp.swift – App entry point
-
Launch Screen.storyboard – Launch screen layout
-
LocalStorageManager.swift – Manages saved video files
-
SplashView.swift – Initial loading screen
- Clone the repository:
git clone https://github.com/yourusername/JellyTok.git