Git Product home page Git Product logo

fakebooker-backend's Introduction

Fakebooker 1.0.0 Fakebooker-Frontend Fakebooker-Backend

Fakebooker is an extensive open-source project that is essentially a clone of the real Facebook. Now Fakebooker is not one of those little pet projects that just prove the concept, the Fakebooker UI is almost identical to the real Facebook Beta which makes it even more unique. The idea of this project is to try to implement Facebook's design patterns using the MERN stack. It is made for educational purposes only and nothing else!

Technologies

Frontend link

  • Javascript library for building User Interfaces: React
  • Client for handling GraphQL queries + caching + local state management: ApolloClient
  • CSS-in-JS library for handling Fakebooker's styles: styled-components
  • Performant, flexible and extensible forms with easy-to-use validation: react-hook-form
  • Notifications are built on top of: react-toastify
  • Popups are made using: reactjs-popup
  • Handling time properly: momentjs
  • Skeletons for loading components: react-content-loader
  • Loading spinners for smaller actions: react-loader-spinner

Backend

  • The NoSQL database for modern applications: mongodb
  • Elegant MongoDB object modeling for node.js: mongoose
  • GraphQLServer: apollo-server
  • Authentication built on top of tokens: jwt
  • Image Upload: cloudinary
  • Easily faking data: faker
  • Testing framework: jest
  • Integration testing package: apollo-server-testing

Most of the backend code is test covered except some resolvers and the subscription ones

Features ( 1.0.0 )

I've tried my best to clone the real Facebook Beta even with the same colors provided in theme.js

Login / Register

  • You can login or register easily, and if something goes wrong there are cool validations to help you get on ( every input is validated on the app )

Post

  • You can create a post in which you can also use markdown and upload an image if you want to just like Facebook
  • You can like or comment on a post and if the post is not yours the person who created it will receive an instant realtime notification about your particular action ( apollo subscriptions )
  • You can delete a post ( if it's yours all comments and likes associated to it will get deleted )
  • You can unlike or delete your comment ( the notifications related to your like or comment will get deleted )
  • You can delete anyone's comment as long as you are the post creator
  • On every post or comment if you hover on the post's / comment's creator you can go to his profile page

ProfileHeader

  • You can make friends: send friend requests to other users and they can respond to your request ( a friend notification is fired through subscriptions once again )
  • You can open up a chat with that particular user
  • You can change your avatarImage ( cloudinary )
  • You can change your coverImage ( cloudinary )
  • You can view your Timeline, About, Friends and Photos pages ( refer to ProfilePage )

Navbar

  • You can search for users with filter on.
  • You can chat with people ( again through subscriptions ) and the ProfilePage corresponds with that user's data
  • You can see all your conversations ( chat button on Navbar )
  • You can see all your notifications ( notification button on Navbar )
  • When you click on a notification it redirects you to the SinglePostPage if it's a post type or user if it's a friend request type

Loading

  • Loading states and skeletons for every single component/page on the app

SinglePostPage

  • Navbar
  • Consists of the single post that the notification is pointing to

Newsfeed

  • The newsfeed contains all posts from the app, which again you can interact with them
  • Contacts: Your friends ( if you click on a friend, a chat tab is going to be opened for a quick chat with him )
  • Navbar

ProfilePage

  • Navbar
  • ProfileHeader

You've read most of the features, go to fakebooker.com and then check in real time the features that I'm explaining

Timeline Page

  • Consists of all your information: About, Photos, Friends and your posts

About Page

  • Consists of all your personal information such as:
    • Workplace
    • School
    • Homeplace
    • Birthday
    • Gender

Friends Page

  • Consists of all your friends ( each friend has a button to remove him from your friends' list )

Photos Page

  • Consists of all your posts that contain images

Setup

  • Make sure you have mongodb installed
  • create from .env.example a .env file and fill in the example values with your actual values ( you need to have a cloudinary account )
npm install && npm start

Contribute

Contribution is accepted and I encourage you to do so as long as you follow my Github worklfow

Issues / Problems

Check out Projects tab in both frontend and backend repos and if you don't find that issue that you are having, better create one and I will make sure everything is alright!

Features

As you can see the repos are still filled with issues that are going to be postponed for version 2 which might not be released or it is going to be released in the future

fakebooker-backend's People

Contributors

404kacper avatar dependabot[bot] avatar kristianweb avatar letsgitcracking avatar quincyhill avatar rohitkrishna094 avatar williamj1788 avatar zihadmahiuddin avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.