/instagram-clone

A social media app similar to Instagram that people can actually use

Primary LanguageJavaScriptMIT LicenseMIT

Description

A social media app similar to Instagram that people can actually use.

Preview

Demo

Click here to go to the Live Demo 🔥 🔥
Youtube demo
Give me a star if you like it. ⭐

Core Features

  • Authentication system

    • Users can sign-in with different methods like Google, Twitter, Github, or Email and password

    • Ability to retrieve password if it is forgotten

  • Profile screen

    • Follow/Unfollow users

      • View all followed users on your profile or other's

      • Unfollow confirmation modal

    • Show mutual friends

    • Edit profile

      • Set profile information and avatar picture

      • Manage blocked users

    • Account settings

      • Change account's Username and Password

      • Show/Hide activity status

      • Make account private/public

      • Disable Comments

      • Delete account

      • + more options

  • Posts

    • Feed is based on who the user follow

    • Users can post pictures and videos from a camera or gallery

    • Crop and filter image posts before sharing

    • Post audio content like songs or mini podcasts

    • Publish a tweet

    • Post a poll question

    • Post a YouTube video

    • Like/Dislike posts

      • View all likes and who liked it

      • Show mutual likes

      • Nice animation when liking a post

    • Comment

      • Comment or reply to someone's comment

      • Like/Dislike comments and sub-comments

      • View all comments and who liked them

      • Include emojis among hundreds while commenting

      • Turn off commenting on a specific post

    • Delete comments or an entire post only by their owners

  • Chat screen

    • Chat with any user

    • Share images, videos, audio, documents, and emojis while chatting

    • Get notified when the other person is typing

    • Get notified when the other person enters the chat you are in

    • Unsend and copy messages

    • Delete chat from both sides

  • Find people

    • Explore other people's posts

    • Sort these posts by likes count, comments count, date, or randomly in both ascending and descending orders

    • Filter them to show images only, videos only, audio only, or posts from people you followed only

  • Notification screen of the latest updates

    • Notifications can self-destruct if the post, reel, like, or comment that based on it got deleted

    • Notifications are grouped into multiple sections: Today, Yesterday, This week, This month, and earlier

  • Block/Unblock users

  • Share video Reels

    • Like and comment on other people's reels

    • Put reels into groups

  • Account privacy

  • Search users

    • Hands-free voice Search or search by typing

  • Suggestions list

    • View new members within the current week

    • View upcoming birthdays within the current month

    • Hover over any user to see their profile in a mini window

  • Activity Status

  • Save posts

  • Included themes are: Dark/light, Iced Coffee, Snorkel Blue, Blue Izis, Butter Cup and honeysucle

  • Compatiblity and performance

    • Passed multiple automated tests on different functionalites using Cypress.io

    • Fully responsive on mobile and tablet devices as well

    • Compatible with all modern browsers including Internet explorer, Firefox, Chrome, Edge ,Opera and Safari.

Used technologies

  • React.js

  • Context API

  • Firebase

  • SCSS

  • Styled Components

Features that will be added soon

  • Stories

  • Ability to put multiple media contents in one post

  • Ability to send voice messages

Available Scripts

Please note before cloning the project: All functions that are responsible for handling actions like following, liking, commenting, etc.. are exist in Context.js which will not be pushed to the repo until this project gets at least 150 stars. without that file, the app won't work. Knowing that, In the project directory, you can run:

npm start

Runs the app in the development mode.
Open http://localhost:3000 to view it in the browser.

The page will reload if you make edits.
You will also see any lint errors in the console.

npm test

Launches the test runner in the interactive watch mode.
See the section about running tests for more information.

npm run cypress

Launch end to end testing with Cypress.io

npm run build

Builds the app for production to the build folder.
It correctly bundles React in production mode and optimizes the build for the best performance.

The build is minified and the filenames include the hashes.
Your app is ready to be deployed!

See the section about deployment for more information.