Skip to content

Amazing Reddit clone - A network of communities where people can dive into their interests, hobbies and passions.

License

Notifications You must be signed in to change notification settings

CMP24-SWE-TEAM3/RedditX-Front-End

Repository files navigation

⚡️Reddit clone⚡️

Amazing Reddit clone - A network of communities where people can dive into their interests, hobbies and passions.

GitHub contributors GitHub issues GitHub license GitHub forks GitHub stars GitHub Language

📝 Table of Contents


📑 About

  • A Social Network for Communities and Groups - Reddit is a network of communities based on people's interests. Find communities you're interested in, and become part of an online community!

  • The Reddit clone software project is an ambitious undertaking that seeks to replicate the popular online forum platform. The project aims to create a platform that is as user-friendly and feature-rich as Reddit, while also providing additional features and customization options. The project team developed the software, which will include a variety of tools for creating and managing subreddits, user profiles, and other features. Ultimately, the goal of the project is to create a powerful and versatile platform that can be used by anyone looking to create their own online community.

⛏️ Built with

🎥 Demo

demo.mp4

📷 Features

🔒 User Authentication

  • You can use your Google account or Facebook account
  • Sign up
  • Login in
  • Forget password
  • Forget username
signUp.mp4

🙍‍♂️ User Profile

  • Profile overview (posts, comments, upvotes, downvotes, etc.)
  • Your Posts
  • Your Comment
  • Your Upvotes
  • Your Downvotes
  • Your Saved Posts and Comments
  • Your Hidden Posts and Comments
  • Your History
  • Your Followers
profile.mp4

📰 Post

  • Create rich text post
  • Create image and video post
  • Create link post
  • Add flair to post
  • Add spoiler to post
  • Add nsfw to post
  • Upvote and downvote post
  • Save post
  • Hide post
  • Report post
  • Edit post
  • Delete post
Rich.text.mp4
Images.and.videos.mp4

💬 Comment

  • Create rich text comment
  • Nested comments
  • Upvote and downvote comment
  • Reply to comment
  • Edit comment
  • Report comment
Comment.mp4

🔍 Search

  • Safe search
  • Search bar
    • Search People
    • Search communities
  • Search page
    • Overview
    • Posts
    • Comments
    • People
  • Search in communities
    • Overview
    • Posts
    • Comments
    • People
Search.mp4

📧 Messages & Notifications

  • Notifications
    • Push notifications
    • All notifications
  • Messages
    • Send a private message
    • All messages
    • Unread messages
    • Sent
    • Post replies
    • Usernames mentions
    • Delete message
    • Report message
    • Reply to message
not.and.messages.mp4

🧑‍💼 Moderator

  • Queues

    • Spam queue (posts and comments)
    • Edited queue (posts and comments)
    • Unmoderated queue (posts and comments)
  • User management

    • Banned users
    • Muted user
    • Approved user
    • Moderators
  • Flairs and emojis

    • Add new flair
  • Rules and regulations

    • Add new rule
    • Edit rule
    • Delete rule
    • Reorder rules
  • Community settings

    • Edit community name
    • Edit community description
    • Edit community topic
    • Edit community language
    • Edit community type (Public, Private, Restricted)
    • Edit community region
    • Enable/disable community Spoiler tag
    • Edit suggested sort for posts
    • Enable/disable image and video in posts
  • Community traffic

    • Day of week
    • Month
    • Page views
    • Members joined
    • Members left
moderator.mp4
Add.flair.mp4

⚙️ User settings

  • Account

    • Edit email address
    • Edit Password
    • Change country
    • Connect to Google account
  • Profile

    • Change display name
    • Change profile picture
    • Change about
    • Enable/disable NSFW content
    • Allow people to follow you
  • Safety and privacy

    • Block people
  • Feed settings

    • Enable/disable Adult content
    • Enable/disable auto play media
  • Emails

    • Enable/disable chat requests
    • Enable/disable new followers
Settings.mp4

👥 Subreddit (Community)

  • Create subreddit (Public, restricted and private)
  • Join/Leave subreddit
  • Add a post to subreddit
  • View subreddit categories
subreddit-and-categories.mp4

🌙 Dark mode

Darkmode.fast.-.Made.with.Clipchamp.mp4

🏁 Getting started

  1. Clone the repository
$ git clone https://github.com/CMP24-SWE-TEAM3/RedditX-Front-End.git
  1. Navigate to repository directory
$ cd RedditX-Front-End
  1. Install dependencies
$ npm install

Running

Running on development mode

$ npm start

📂 Folder structure

src

Source directory

App.js

  • API

    Contains Axios instance

  • Assets

    Contains Images, videos directories etc...

    • Images

      Contains Images

    • Videos

      Contains Videos

  • Contexts

    Contains contexts files

  • Utils

    Contains helper functions (Pure functions)

  • Hooks

    Contains Custom hooks

  • Services

    Contains any functions that deals with the API

  • Components

    Contains Small components

    • Button

      Button.jsx

      Button.styled.js

      Button.test.js

  • Layouts

    Contains layouts that consists of components Bigger components

    • Form

      Form.jsx

      Form.styled.js

      Form.test.js

  • Pages

    Pages that consists of Layouts and may be some components

    • Home

      Home.jsx

      Home.styled.js

      Home.test.js

  • Features

    Contains features that is considered a small project ex. Authentication, Posts, Community etc...

    • Authentication

      Contains Authentication features (pages, components, helpers ,contexts ,etc..

      index.js

      • Assets

        Contains Images, videos directories etc...

        • Images

          Contains Images

        • Videos

          Contains Videos

      • Contexts

        Contains contexts files

      • Utils

        Contains helper functions (Pure functions)

      • Hooks

        Contains Custom hooks

      • Services

        Contains any functions that deals with the API

      • Components

        Contains Small components

      • Layouts

        Contains layouts that consists of components Bigger components

      • Pages

        Pages that consists of Layouts and may be some components

Actual folder Structure

├───API
├───Assets
│   └───Images
├───Components
│   ├───AdvertiseButton
│   ├───BadgeButton
│   ├───BestButton
│   ├───CategoryButton
│   ├───CategoryTitle
│   ├───ChooseDate
│   ├───CommunityCard
│   ├───CommunityCardItem
│   ├───CommunityCardItemExplore
│   ├───CommunityPageItem
│   ├───CreatePostButton
│   ├───CustomMenu
│   ├───CustomToggle
│   ├───DotButton
│   ├───DropDownButtonLeft
│   ├───DropDownItem
│   ├───DropDownMenu
│   ├───DropDownRight
│   ├───EveryWhereButton
│   ├───GlobalButton
│   ├───HeadingContent
│   ├───HotButton
│   ├───ImageButton
│   ├───LinkButton
│   ├───LoginButton
│   ├───MainLinks
│   ├───ModalAfterCreateCommunity
│   ├───ModalCommunity
│   ├───ModeratorButton
│   ├───NewButton
│   ├───NotificationButton
│   ├───PopularButton
│   ├───Post
│   ├───PostsList
│   ├───ProfilePostButton
│   ├───ScrollButton
│   ├───SearchBar
│   ├───SearchDropDown
│   ├───SideBar
│   ├───SignUp
│   ├───SwitchButton
│   └───TopButton
├───Contexts
│   └───CategoryContext
├───Data
├───Features
│   ├───Authentication
│   │   ├───Assets
│   │   ├───Components
│   │   │   ├───Button
│   │   │   │   └───__snapshots__
│   │   │   ├───Checked
│   │   │   │   └───__snapshots__
│   │   │   ├───DragAndDropFile
│   │   │   │   └───__snapshots__
│   │   │   ├───FormInput
│   │   │   │   └───__snapshots__
│   │   │   ├───FormInputPageCom
│   │   │   │   └───__snapshots__
│   │   │   ├───GenderButton
│   │   │   │   └───__snapshots__
│   │   │   ├───InterestButton
│   │   │   │   └───__snapshots__
│   │   │   ├───LoadingSpinner
│   │   │   │   └───__snapshots__
│   │   │   ├───PasswordStrength
│   │   │   │   └───__snapshots__
│   │   │   ├───UploadedImage
│   │   │   │   └───__snapshots__
│   │   │   └───UploadedImagesContainer
│   │   │       └───__snapshots__
│   │   ├───Contexts
│   │   ├───Hooks
│   │   ├───Layouts
│   │   │   ├───AfterSignUp
│   │   │   │   └───__snapshots__
│   │   │   ├───AfterSignUpLoading
│   │   │   │   └───__snapshots__
│   │   │   ├───AfterSignUpModal
│   │   │   │   └───__snapshots__
│   │   │   ├───ForgetPassword
│   │   │   ├───ForgetPasswordModal
│   │   │   │   └───__snapshots__
│   │   │   ├───ForgetUserName
│   │   │   ├───ForgetUserNameModal
│   │   │   │   └───__snapshots__
│   │   │   ├───Gender
│   │   │   │   └───__snapshots__
│   │   │   ├───Interests
│   │   │   │   └───__snapshots__
│   │   │   ├───LogIn
│   │   │   │   └───__snapshots__
│   │   │   ├───LogInPageCom
│   │   │   ├───LogInScreen
│   │   │   ├───LogInVerticalModal
│   │   │   │   └───__snapshots__
│   │   │   ├───NewPasswordPageCom
│   │   │   │   └───__snapshots__
│   │   │   ├───SignUp
│   │   │   │   └───__snapshots__
│   │   │   ├───SignUpFirstScreen
│   │   │   │   └───__snapshots__
│   │   │   ├───SignUpPageFirstScreen
│   │   │   │   └───__snapshots__
│   │   │   ├───SignUpPageSecondScreen
│   │   │   │   └───__snapshots__
│   │   │   ├───SignUpSecondScreen
│   │   │   │   └───__snapshots__
│   │   │   ├───SignUpVerticalModal
│   │   │   │   └───__snapshots__
│   │   │   └───UploadPhoto
│   │   ├───Pages
│   │   │   ├───ForgetPasswordPage
│   │   │   │   └───__snapshots__
│   │   │   ├───ForgetUserNamePage
│   │   │   │   └───__snapshots__
│   │   │   ├───LogInPage
│   │   │   │   └───__snapshots__
│   │   │   ├───NewPasswordPage
│   │   │   │   └───__snapshots__
│   │   │   └───SignUpPage
│   │   │       └───__snapshots__
│   │   ├───Services
│   │   └───Utils
│   ├───Messages
│   │   ├───Assets
│   │   ├───Components
│   │   │   ├───Header
│   │   │   │   └───__test__
│   │   │   ├───MessagesItems
│   │   │   │   └───__test__
│   │   │   ├───MessagesPanel
│   │   │   │   └───__test__
│   │   │   ├───PostReply
│   │   │   │   └───__test__
│   │   │   ├───ReportModal
│   │   │   │   └───__test__
│   │   │   ├───SendMessage
│   │   │   │   └───__test__
│   │   │   ├───SentMessageItem
│   │   │   │   └───__test__
│   │   │   └───UsernameMentions
│   │   │       └───__test__
│   │   ├───Contexts
│   │   ├───Hooks
│   │   ├───Layouts
│   │   │   ├───AllMessages
│   │   │   ├───Mentions
│   │   │   ├───Panel
│   │   │   ├───Posts
│   │   │   ├───SentMessages
│   │   │   └───Unread
│   │   ├───Pages
│   │   ├───Services
│   │   │   └───__test__
│   │   └───Utils
│   ├───Moderator
│   │   ├───Assets
│   │   │   └───Images
│   │   ├───Components
│   │   │   ├───AllModerators
│   │   │   ├───ApprovedUsers
│   │   │   ├───AsideGraph
│   │   │   ├───BannedUsers
│   │   │   ├───BuutonsBar
│   │   │   ├───CancelModal
│   │   │   ├───DayOfWeek
│   │   │   ├───DeleteModal
│   │   │   ├───DroppableRule
│   │   │   ├───EditModerators
│   │   │   ├───Flair
│   │   │   ├───FlairInfo
│   │   │   ├───FlairListHeader
│   │   │   ├───HeaderGraph
│   │   │   ├───InvitedModerators
│   │   │   │   └───__snapshots__
│   │   │   ├───LineChart
│   │   │   ├───MainInfo
│   │   │   ├───ModeratorRow
│   │   │   ├───MonthState
│   │   │   ├───MutedUsers
│   │   │   ├───NavbarRule
│   │   │   ├───NewFlair
│   │   │   ├───PageNumber
│   │   │   ├───QueueHeader
│   │   │   ├───QueueHeaderPopup
│   │   │   ├───QueuesControls
│   │   │   ├───ReorderItem
│   │   │   ├───ReorderRules
│   │   │   ├───Results
│   │   │   ├───RuleHeader
│   │   │   ├───RuleModal
│   │   │   └───RuleTab
│   │   ├───Contexts
│   │   ├───Hooks
│   │   ├───Layouts
│   │   │   ├───ApprovedPage
│   │   │   ├───ApproveUser
│   │   │   ├───ApproveUserModal
│   │   │   ├───BannedPage
│   │   │   ├───BanUser
│   │   │   ├───BanUserModal
│   │   │   ├───CommunitySettingsPage
│   │   │   ├───EditBanUser
│   │   │   ├───EditBanUserModal
│   │   │   ├───EditedQueue
│   │   │   ├───FlairList
│   │   │   ├───Graph
│   │   │   ├───InviteModerators
│   │   │   ├───InviteModeratorsModal
│   │   │   ├───LayoutHeader
│   │   │   ├───LayoutTabs
│   │   │   ├───ModeratorsPage
│   │   │   ├───MutedPage
│   │   │   ├───MuteUser
│   │   │   ├───MuteUserModal
│   │   │   ├───PostsAndCommentsPage
│   │   │   ├───SpamQueue
│   │   │   ├───Tables
│   │   │   └───UnmoderatedQueue
│   │   ├───Pages
│   │   │   ├───FlairPage
│   │   │   ├───Moderator
│   │   │   ├───Rules
│   │   │   ├───TestModeratorsModals
│   │   │   └───TrafficStates
│   │   ├───Services
│   │   │   └───__test__
│   │   └───Utils
│   ├───Notifications
│   │   ├───Assets
│   │   │   └───images
│   │   ├───Components
│   │   │   ├───NotificationContent
│   │   │   │   └───__test__
│   │   │   ├───NotificationItem
│   │   │   │   └───__test__
│   │   │   └───NotificationsUpperSide
│   │   ├───Contexts
│   │   ├───Hooks
│   │   ├───Pages
│   │   │   └───Notifications
│   │   ├───Services
│   │   │   └───__test__
│   │   └───Utils
│   ├───Post
│   │   ├───Assets
│   │   │   └───Images
│   │   ├───Components
│   │   │   ├───BlockStyleControls
│   │   │   ├───ChooseCommunity
│   │   │   ├───CollapsePostFooter
│   │   │   ├───Comment
│   │   │   ├───CommentDarftEditor
│   │   │   ├───CommunityCard
│   │   │   ├───CommunityCardItem
│   │   │   ├───CommunityCardPost
│   │   │   ├───CommunityDate
│   │   │   ├───CommunityOptions
│   │   │   ├───DraftEditor
│   │   │   ├───DraftEditorForm
│   │   │   ├───DraftLinkForm
│   │   │   ├───DragDropFile
│   │   │   │   └───__snapshots__
│   │   │   ├───FlairModal
│   │   │   ├───ImageAndVideoForm
│   │   │   ├───InlineStyleControls
│   │   │   ├───LinkControls
│   │   │   ├───LinkForm
│   │   │   ├───Media
│   │   │   ├───MediaControls
│   │   │   ├───ModeratorWidget
│   │   │   │   └───__snapshots__
│   │   │   ├───NavigationPost
│   │   │   ├───OnlineMembers
│   │   │   ├───PostContent
│   │   │   ├───PostFlagsWrapper
│   │   │   ├───PostFooter
│   │   │   ├───PostFormFooter
│   │   │   ├───PostGuidelines
│   │   │   ├───PostPublisher
│   │   │   ├───PreviewImage
│   │   │   ├───RelatedCommunities
│   │   │   ├───RichTextPostBody
│   │   │   ├───RulesWidget
│   │   │   ├───ScrollButton
│   │   │   ├───SpamPostFooter
│   │   │   ├───StyleControlButton
│   │   │   ├───TopCommunities
│   │   │   │   └───__snapshots__
│   │   │   ├───UploadedImage
│   │   │   ├───UploadedImagesContainer
│   │   │   ├───UploadedMedia
│   │   │   ├───UserFlairPreview
│   │   │   ├───UserSideBar
│   │   │   ├───UserSideCard
│   │   │   ├───VotingBar
│   │   │   │   └───__snapshots__
│   │   │   └───WidgetContainer
│   │   ├───Contexts
│   │   ├───Hooks
│   │   ├───Layouts
│   │   │   ├───CollapsePost
│   │   │   ├───CollapsePostContent
│   │   │   ├───DraftEditorTab
│   │   │   ├───ImagesAndVideosTab
│   │   │   ├───LinkTab
│   │   │   ├───Main
│   │   │   ├───PostShape
│   │   │   ├───Sidebar
│   │   │   ├───SpamPost
│   │   │   └───Tabs
│   │   ├───Pages
│   │   │   ├───CreatePost
│   │   │   ├───Post
│   │   │   ├───PostPreview
│   │   │   └───PreviewPostComment
│   │   ├───Services
│   │   │   └───__test__
│   │   └───Utils
│   │       └───__tests__
│   ├───Search
│   │   ├───Assets
│   │   ├───Components
│   │   │   ├───Comment
│   │   │   ├───CommentBody
│   │   │   ├───CommunityCard
│   │   │   ├───CommunityCardItem
│   │   │   ├───CommunityItem
│   │   │   ├───CreateCommunity
│   │   │   │   └───__snapshots__
│   │   │   ├───MainHeader
│   │   │   │   └───__snapshots__
│   │   │   ├───NotFound
│   │   │   ├───People
│   │   │   ├───PeopleCardItem
│   │   │   ├───PeopleItem
│   │   │   ├───Post
│   │   │   ├───PostFooter
│   │   │   ├───PostHeader
│   │   │   ├───Posts
│   │   │   ├───ResponsiveNavbar
│   │   │   │   └───__snapshots__
│   │   │   ├───SafeSearch
│   │   │   │   └───__snapshots__
│   │   │   └───SetCommunityCard
│   │   ├───Contexts
│   │   │   ├───SafeSearchContext
│   │   │   └───SearchWordContext
│   │   ├───Hooks
│   │   ├───Layouts
│   │   │   ├───CommentsPage
│   │   │   ├───CommunitiesPage
│   │   │   ├───PeoplePage
│   │   │   └───PostsPage
│   │   ├───Pages
│   │   │   └───Search
│   │   ├───Services
│   │   │   └───__test__
│   │   └───Utils
│   ├───settings
│   │   ├───Assets
│   │   ├───Components
│   │   │   ├───AboutUser
│   │   │   ├───BlockPeople
│   │   │   ├───CompContainer
│   │   │   ├───CountrySetting
│   │   │   ├───DeleteAccount
│   │   │   ├───DisplayName
│   │   │   ├───FollowProfile
│   │   │   ├───PasswordChange
│   │   │   ├───PasswordModal
│   │   │   ├───ProfileImage
│   │   │   ├───ProfileInformation
│   │   │   ├───ProfileNsfw
│   │   │   ├───SettingChange
│   │   │   ├───SettingModal
│   │   │   └───SettingsComponent
│   │   ├───Contexts
│   │   ├───Hooks
│   │   ├───Layouts
│   │   │   ├───AccountPage
│   │   │   ├───EmailsPage
│   │   │   ├───FeedPage
│   │   │   ├───PrivacyPage
│   │   │   └───ProfilePage
│   │   ├───Pages
│   │   │   └───SettingsPage
│   │   ├───Services
│   │   │   └───__test__
│   │   └───Utils
│   ├───Subreddit
│   │   ├───Assets
│   │   │   └───images
│   │   ├───Components
│   │   │   ├───AboutCommunity
│   │   │   ├───BodyContent
│   │   │   ├───Button
│   │   │   ├───Categories
│   │   │   │   └───__test__
│   │   │   ├───CategoryBar
│   │   │   ├───CategoryDropDown
│   │   │   │   └───__snapshots__
│   │   │   ├───Community
│   │   │   │   └───__test__
│   │   │   ├───CommunityCard
│   │   │   ├───CommunityDate
│   │   │   ├───CommunityOptions
│   │   │   ├───CommunitySideCardItem
│   │   │   │   └───__test__
│   │   │   ├───CommunityTopics
│   │   │   ├───FlairWidget
│   │   │   ├───Header
│   │   │   │   └───__test__
│   │   │   ├───ImageButton
│   │   │   ├───Index Body
│   │   │   │   └───__test__
│   │   │   │       └───__snapshots__
│   │   │   ├───Index Header
│   │   │   │   └───__test__
│   │   │   ├───LinkButton
│   │   │   ├───ModeratorWidget
│   │   │   ├───NoSubReddit
│   │   │   ├───OnlineMembers
│   │   │   ├───Post
│   │   │   │   └───__snapshots__
│   │   │   ├───PrivatePage
│   │   │   ├───ProfilePostButton
│   │   │   │   └───__snapshots__
│   │   │   ├───RequestMods
│   │   │   ├───RulesWidget
│   │   │   ├───SaveChangesModal
│   │   │   ├───SelectYourFlair
│   │   │   │   └───__snapshots__
│   │   │   ├───SetSubReddit
│   │   │   ├───SubRedditBody
│   │   │   ├───SubRedditHeader
│   │   │   ├───SubRedditNoPosts
│   │   │   ├───SubRedditPosts
│   │   │   ├───SubRedditSideBar
│   │   │   ├───UserFlairPreview
│   │   │   └───WidgetContainer
│   │   ├───Contexts
│   │   ├───Hooks
│   │   ├───Layouts
│   │   │   ├───Communities Container
│   │   │   ├───CommunitySideCard
│   │   │   ├───CreatePost
│   │   │   │   └───__snapshots__
│   │   │   └───Right Section
│   │   ├───Pages
│   │   │   ├───CommunityLeaderBoard
│   │   │   ├───IndexPage
│   │   │   └───SubReddit
│   │   ├───Services
│   │   │   └───__test__
│   │   └───Utils
│   └───User
│       ├───Assets
│       │   └───images
│       ├───Components
│       │   ├───AdultPage
│       │   ├───BlockModal
│       │   ├───CategoryBar
│       │   ├───Follower
│       │   ├───ModeratorOf
│       │   ├───SetUser
│       │   ├───UserComment
│       │   ├───UserNav
│       │   ├───UserNoPosts
│       │   ├───UserNotFound
│       │   ├───UserSideBar
│       │   └───UserSideCard
│       ├───Contexts
│       ├───Hooks
│       ├───Layouts
│       │   ├───Followers
│       │   ├───Overview
│       │   ├───UserComments
│       │   ├───UserDownVoted
│       │   ├───UserHidden
│       │   ├───UserHistory
│       │   ├───UserPosts
│       │   ├───UserSaved
│       │   └───UserUpVoted
│       ├───Pages
│       │   └───User
│       ├───Services
│       │   └───__test__
│       └───Utils
├───Hooks
├───Layouts
│   ├───Communities
│   ├───CommunityCard
│   ├───CreatePost
│   ├───CreatePostSideBar
│   ├───Footer
│   ├───Navbar
│   ├───Navigation
│   ├───PopularPosts
│   ├───Posts
│   ├───RecentPosts
│   └───ShowPosts
├───Pages
│   ├───DummyPage
│   ├───ErrorBoundary
│   ├───ErrorPage
│   ├───Explore
│   ├───HomePage
│   └───NotFound
├───PushNotification
├───Services
├───Theme
└───Utils

✍️ Contributors

Abdelrahman Hamza
Abdelrahman Hamza

Ziad Sherif
Ziad Sherif

khaled farahat
khaled farahat

mohamed romee
Mohamed Ibrahim

Mohamed Walid
Mohamed Walid

Abdelrahman Ashraf
Abdelrahman Ashraf

Devops

Waleed Hesham
Waleed Hesham

🔒 License

This software is licensed under MIT License, See License .

About

Amazing Reddit clone - A network of communities where people can dive into their interests, hobbies and passions.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages