Instagram Clone

An Instagram clone app made with Swift and Firebase.

About The Project

This project is being developed for educational purpose and is still under development, I will continue to add more feartures to it.

In this repository, I try my best to mimic the key features of the Instagram. I have utilized serveral frameworks and classes in order to create a complex UI and ehanced UX, which include:

  • Architecture:
    • MVVM
  • UI:
    • PhotoKit: Allow user to select image from their Photo Library.
    • UICollectionViewCompositionalLayout: To create a complex layout with multi section and various layout.
    • UIView animate: For smoother experience and transition.
  • Database:
    • FirebaseAuth: Used for authenticating user.
    • FireStore: Used for storing and querying data of users and posts.
    • Storage: Used for storing user-generated content such as images.


  • Login and Signup Screen:
    • Allow user to log in if they already have an account or create a new one.
  • Home Screen:
    • View all posts from users that you are following.
    • Like post.
    • View all users who have liked the post.
    • View all comments on a post.
  • Explore Screen:
    • Display all photos of user’s posts excluding from your own posts.
    • Be able to search user based on usernames.
  • Upload Post Screen:
    • Allow user to add photo to post from Library or Camera.
    • Post’s caption is optional.
  • Profile Screen:
    • Support both horizontal and vertical scrolling like Instagram.
    • Be able to follow or unfollow user.
    • Be able to change user’s info such as: fullname, username, bio and avatar.
  • Support dark mode.


  • Login Screen
Log in Sign up
  • Home Screen

Self-sizing cell and remain photo aspect ratio. Be able to load more comments.

Home Like Comment Other Profile
  • Explore Screen
Explore Search Post Detail
  • Upload Post
Upload post
  • Profile Screen
Profile Edit Profile Settings Check Follow
  • Dark Mode:
Dark Mode


  1. Clone the repo:

git clone https://github.com/ducanh2211/Instagram-Clone.git
cd Instagram-Clone/
  1. Delete the following file and folder: Podfile.lock, InstagramClone.xcworkspace and Pods.

  2. Install the dependencies through CocoaPods by run command:

pod install
  1. Set up Firebase project by following the instruction.

  2. Delete file GoogleService-Info.plist and change the bundle Id.

Upcoming Features

  • Notifications for likes, comments, follow, etc.
  • Add stories.
  • Delete posts.
  • One-to-one messages.



View Github