/facebook-clone

A minimal social networking app with full-stack implementation covering user stories, behavior-driven design, entity modeling, UI/UX design, backend development, and integration testing.

Primary LanguageRubyMIT LicenseMIT

Nzuko - A social networking platform cloned from facebook

Version Documentation Maintenance License: MIT Twitter: vokeugo


This project is a minimal implementation of a social networking app that clones the core features of facebook. The word Nzuko is a local name meaning gathering. Visit the Live Url .

It explores functionalities like:

  • Create new account
  • Writing posts and comments (text only)
  • Liking posts and comments
  • Sending / accepting / canceling friend requests
  • Notifications for new friend request.
  • User authentication using Devise and OAuth (omniauth-facebook)
  • User authorization for posts and comments

ERD

Future implementations:

  • Profile management is minimal but will be extended
  • Real-time news feed
  • Real-time notifications - from new posts, friend request and ads
  • Instant Messaging
  • Sharing and Tagging of posts
  • Support for multimedia content - videos, images and more
  • Additional social login - google, instagram

Built with:

  • Ruby 2.4.0
  • Rails 5.2.3
  • PostgreSQL
  • Cucumber & Capybara (Integration tests)
  • RSpec (Unit test)
  • Devise / Omniauth-facebook (authentication)
  • Bootstrap (UI)
  • Guard / Figaro
  • FactoryBot (FactoryGirl) / Faker

Installation

Clone this repository from your terminal

git clone https://github.com/johnsonsirv/facebook-clone.git

Database setup

in your terminal run

rake db:setup

rake db:migrate db:test:prepare

Run test suite
run integration level tests (user stories located in features/)

in your terminal run

cucumber features

run unit level tests (specs location spec/)

in your terminal run

rspec spec

Usage

on your terminal run

rails server

Visit localhost://3000

Contributor(s)

Victor Okeugo

Contributing

  1. Fork it (https://github.com/johnsonsirv/facebook-clone/fork)
  2. Create your feature branch (git checkout -b feature/[choose-a-name])
  3. Commit your changes (git commit -m 'What this commit will fix/add')
  4. Push to the branch (git push origin feature/[chosen name])
  5. Create a new Pull Request

    You can also create issues