Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 10 additions & 13 deletions Podfile
Original file line number Diff line number Diff line change
@@ -1,22 +1,19 @@
# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'
platform :ios, '18.0'

target 'TikTok' do
# Comment the next line if you don't want to use dynamic frameworks
use_frameworks!

# Pods for TikTok
pod 'Kingfisher', '~> 5.0'
pod 'Firebase'
pod 'Firebase/Database'
pod 'Firebase/Auth'
pod 'Firebase/Storage'
pod 'Firebase/Core'
pod 'Firebase/Messaging'
pod 'Kingfisher', '~> 8.3.2'
pod 'Firebase', '~> 11.14.0'
pod 'Firebase/Database', '~> 11.14.0'
pod 'Firebase/Auth', '~> 11.14.0'
pod 'Firebase/Storage', '~> 11.14.0'
pod 'Firebase/Core', '~> 11.14.0'
pod 'Firebase/Messaging', '~> 11.14.0'
pod 'SVProgressHUD'
pod 'SwiftVideoGenerator'
pod 'EasyTipView', '~> 2.1'
pod 'PryntTrimmerView'
pod 'lottie-ios'
pod 'PanModal'
pod 'NextLevelSessionExporter', '~> 0.4.7'
pod 'lottie-ios', '~> 4.5.2'
end
139 changes: 71 additions & 68 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,68 +1,71 @@
# TikTok-Clone

**TikTok-Clone** is a recreation of the TikTok ios application. Using programmatic UIKit, avkit, photokit, avfoundation and firebase realtime db.


## Some of the Features
- [x] All UI built with Programmatic UIKit w/o storyboards or nibs
- [x] Auth with Firebase Auth
- [x] Tiktok Onboarding screens
- [x] Feed, Profile, Notifications & Discover Tabs
- [x] **Custom Photos & Video Picker like the actual tiktok app**
- [x] **Custom Video Recorder like the actual tiktok app**
- [x] **Custom Video Player just like the actual tiktok app**
- [x] TikTok-Identical Vertical Swipe up feed.
- [x] **Overlay Music Video processing**
- [x] Custom UIViewController Transition Animation
- [x] Custom UIView Transition Animation
- [x] **Multi video selection**
- [x] **Text Overlay video processing**
- [x] Custom Fonts etc.



**Backend: Firebase**
- [x] Using Firebase RTDB as data store
- [x] Using Firebase Storage to store videos, video thumbnail images & profile images.

**ScreenShots**

1. Onboarding
![](https://github.com/samisays11/TikTok-Clone/blob/master/Assets/tiktokOnboarding1.png)

2. Main feeds
![](https://github.com/samisays11/TikTok-Clone/blob/master/Assets/tiktokMainScreens1.png)


## Video Demos🎥:

### Home Feed:

![](https://github.com/samisays11/TikTok-Clone/blob/master/Assets/homefeed.gif)


### Notification Feed:

![](https://github.com/samisays11/TikTok-Clone/blob/master/Assets/notificationfeed.gif)


### Video Picker Demo:

Multi Video Selection from Custom Media Picker With Zoom Transition Animations:

![](https://github.com/samisays11/TikTok-Clone/blob/master/Assets/multimediaSelection.gif)


### Camera Demo:

Multi-Clip Camera Recording with Custom Camera Recorder, custom font text overlay, voice overlay into recorder clips etc.

![](https://github.com/samisays11/TikTok-Clone/blob/master/Assets/camdemo.gif)



More Demos Coming soon...🚧

Major Development Notes Coming soon...🚧

Major Refactor in progress...🚧
# DROP - Social Product Discovery App

## Introduction

DROP is an iOS mobile application designed for discovering products through an engaging, vertical video feed. Users can explore product videos, get brief details, and navigate to purchase locations. The application is currently in an active development phase, with core features implemented using mock data for products and brands.

## Key Features

* **Vertical Video Feeds:**
* **For You:** A personalized feed of product videos. (Currently shows all products, will be filtered by brand preferences).
* **Explore:** A feed for discovering a broader range of product videos. (Currently shows all products, potentially shuffled).
* Autoplay functionality for videos as they become visible.
* **Product Interaction Icons (on each video post):**
* **Like:** Functional, updates like count and visual state.
* **Shop:** (UI Only) Intended to show product variants or related items.
* **Save:** (UI Only) Intended for saving products to a wishlist.
* **Share:** (UI Only) Intended for sharing product videos.
* **Follow Brand:** (UI Only) Intended for following brands.
* **Product Details Overlay:**
* Accessible via a "View Product" button on video posts.
* Displays product name, brand name, and brand logo.
* Presented as a swipeable bottom sheet using PanModal.
* **"Buy Now" Functionality:**
* Located within the Product Details Overlay.
* Redirects the user to the brand's product page via the device's default browser.
* Appends UTM parameters to the URL for tracking.
* **Brand Preferences:**
* Users are prompted (after a few scrolls on their first session) to select their favorite brands.
* The "For You" feed content is then filtered based on these selections.
* Preferences are stored locally using `UserDefaults`.
* **Navigation:**
* Basic three-tab structure: "For You," "Explore," and "Search" (Search tab is currently a placeholder).

## Tech Stack

* **Language:** Swift
* **UI:** UIKit (Programmatic UI with Auto Layout)
* **Key Dependencies:**
* `PanModal`: For the draggable bottom sheet (Product Details Overlay, Brand Preferences).
* `Kingfisher`: For asynchronous image loading and caching (brand logos, user profile images in feed).
* *(Firebase was part of the original project for backend features like Auth, Database, Storage. While not currently active for data serving, the dependency might still be in the project for potential future use.)*
* **Data:**
* Currently utilizes mock data loaded from CSV files for products and brands.

## How to Build/Run

1. **Clone the repository.**
2. **Ensure CocoaPods is installed.** If not, install it (`sudo gem install cocoapods`).
3. **Navigate to the project directory in Terminal and run `pod install`** to install dependencies.
4. **Open `TikTok.xcworkspace` in Xcode.** (Note: The project root file is still named `TikTok.xcworkspace` from its previous iteration).
5. **Select an iOS simulator or a connected iOS device.**
6. **Build and run the project.**

## Project Status & Next Steps

This project is a significant refactor and transformation of an older "TikTok Clone" application into "DROP," a product discovery platform. The current focus has been on establishing the core user experience for browsing and interacting with product-focused video content using mock data.

**Potential Next Steps:**

* **Backend Integration:** Replace mock CSV data with a live backend service for products, brands, user accounts, and interactions.
* **Full Feature Implementation:**
* Implement full functionality for Shop, Save, Share, and Follow Brand buttons.
* Develop the "Search" tab functionality.
* Consider user accounts and persistence of likes/saves/follows.
* **UI/UX Polish:** Refine animations, transitions, and overall visual design.
* **Content Strategy:** Define how product videos and information will be sourced and managed.
* **Testing:** Add unit and UI tests.
* **Project Renaming:** Fully rename project files and internal references from "TikTok" to "DROP".

---
*This README has been updated to reflect the current state of the "DROP" application.*
8 changes: 4 additions & 4 deletions TikTok.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -956,7 +956,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.6;
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
Expand Down Expand Up @@ -1010,7 +1010,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.6;
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
Expand All @@ -1028,7 +1028,7 @@
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = M6D9BZ85YH;
INFOPLIST_FILE = TikTok/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
Expand All @@ -1048,7 +1048,7 @@
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = M6D9BZ85YH;
INFOPLIST_FILE = TikTok/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
IPHONEOS_DEPLOYMENT_TARGET = 18.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
Expand Down
142 changes: 0 additions & 142 deletions TikTok/Controllers/Bookmark/BookmarkVC.swift

This file was deleted.

Loading