GithubHelp home page GithubHelp logo

rhelli / stayintouch-social-media Goto Github PK

View Code? Open in Web Editor NEW
12.0 2.0 1.0 66.12 MB

A simple social media web app with friendships, posts, comments and likes.

Home Page: https://murmuring-scrubland-45037.herokuapp.com/

License: MIT License

Ruby 56.12% JavaScript 0.79% CSS 25.63% HTML 17.46%
ruby ruby-on-rails social-media html5 css sass rubocop heroku

stayintouch-social-media's Introduction

Stay In Touch's Home Page

☝🏽 Stay In Touch

A Social Media Web App Built With Rails.


Visit The Site »

Download this repository | Report A Bug | Fork It

Table of Contents

🔰 The Project Brief

This is a project included in the Rails module to be completed by students of Microverse.

This project sees us tackle a larger, more complex and realistic task in creating a social media web app with all the functionality we've come to expect from social media websites - friendships, invites, posts, comments and likes.

As this project naturally has a larger remit than previous back-end centric projects that have come before, it is split up into 5 major milestones:

  1. Data Architecture & Planning
  2. Creation of friendship models & associations
  3. Improving efficiency of mutual friendship generation & handling
  4. Deployment to Heroku
  5. Final Touches & Styling

🔍 The Nitty Gritty

Posts, comments and likes had been handled for us in the project setup, thus the core challenges in this project were establishing an efficient friendship system whereby users could send invitations as well as receive invitations, all while maintaining a tidy database.

This enforced some ground rules as to how we should generated our models:

  • Users would have to have friendships as well as inverse friendships (where they are the friend of another)
  • Friendships would have to belong to users both as the creator of the friend request and also the receiver.

Subsequently, an additional medley of controller and helper functions would enable detection of friend request states and existence, enable creation and destruction of requests and allow for updating on friend request acceptance or decline.

🔬 Tools & Technology Used

Languages & Frameworks

  • Ruby 2.7.1
  • Ruby on Rails 6.0.3.1
  • SASS/CSS3

Gems of note

Testing

Database

  • PostgreSQL

Linters & Quality Control

Deployment

  • Heroku

💻 Setup & Use

Setup

Setup should be fairly straightforward. You will have to ensure your machine is properly equipped to run the code first:

  1. Make sure you have both Ruby and Ruby on Rails (MacLinuxWindows) installed.
  2. Download this repository.
  3. cd into the root directory of wherever you download this repo. What does 'cd' mean?
  4. Whilst at the root (home) directory of this project, enter bundle install to install the projects software dependencies.
  5. In your terminal window, enter rails server to start the server.
  6. Now navigate to localhost:4000 in your browser to start playing around with the webpages!

Alternatively if you'd like to confirm the entire project is passing testing:

  1. cd into this repository in your terminal
  2. Enter bundle exec rspec to run all tests

🎞️ Showcase

Authentication & Signing In

Sign In

Signing In is facilitated with the Devise Gem and offers additional functionality like password recovery and signing up for a new account.

The Navbar & Friend Requests Dropdown Menu

The Navbar

A closer look at the site-wide navbar and Facebook-style dynamically populated friend requests dropdown.

Viewing Friend Requests From The Navbar

Friend Request Dropdown

A closer look at the friend request dropdown - A notification ball displays when the user receives new friend requests and the list displays new requests. The user is given the option to accept or decline. Additionally, suggested (non-friended) users are listed below.

Creating A New Post

Creating A New Post

From the homepage the user can create new posts which are fed into the user and user's respective friends' timelines upon submission.

Prompting and Encouraging Users To Post

Randomised Post Title

The post title relays a series of different messages to the user to engage and encourage the user to post more.

Liking & Commenting On Posts

Liking and Commenting On Posts

Users are able to easily create a basic thread beneath the post's main content and like or unlike a post.

The Friendships Page

The Friendship Page

Selecting 'Friend Requests' from the navbar takes the user to the Friendships page, where a full page view of new invites and suggested users can be seen.

Adding Friends From The Friendship Page

Adding Friends From The Friendship Page

Users can easily send friend requests from the list of suggested users. New pending friend requests appear at the top of the page.

Accepting & Declining Requests From The Friendship Page

Friend Requests on The Friendship Page

Incoming friend requests will also appear at the top of the page, prior to 'Pending Requests'. Accepting will add the sender of the invitation to the users friends. Declining will delete the friendship (and friend request by extension).

The User Index

The User Index

As an alternative to the Friendship page, the User Index will display all users - friends, non-friends and pending requests.

The User Profile

The User Profile

The user profile displays the users own posts and offers familiar functionality such as commenting on and liking their posts.

Friend Requests & Status From The User Profile

User Profile Buttons

The user profile also features 'Add Friend', 'Request Pending' and 'Friends' buttons.


🚦 Contributions, Issues and Forking

Contributions, issues and feature requests are more than welcome!

If you have any problems running or setting this project up, please submit it as a bug on the issues page. right away!

If you want to make your own changes, modifications or improvements, go ahead and Fork it!

  1. Fork it
  2. Create your working branch (git checkout -b [choose-a-name])
  3. Commit your changes (git commit -am 'what this commit will fix/add/improve')
  4. Push to the branch (git push origin [chosen-name])
  5. Create a new Pull Request

👨🏽‍💻 Creator

Rory Hellier - Github

🖐🏼 Show Your Support!

Give a ⭐️ if you like this project!

⚖️ Licensing

This project is MIT licensed.

stayintouch-social-media's People

Contributors

rhelli avatar nidalaa avatar dependabot[bot] avatar bolah2009 avatar

Stargazers

LeJexy avatar Abdel Pérez Téllez avatar Ebeagu Samuel avatar Alexis Sanchez avatar Victor Manuel Gonzalez Buitrago avatar Jaspreet Singh avatar Mupa M'mbetsa Nzaphila avatar Luis Angel Maldonado Chávez avatar Elizabeth Villalejos avatar Fernando Bahamondes avatar Oscar Mier avatar Sharmaarke Ahmed avatar

Watchers

James Cloos avatar  avatar

Forkers

d-e-f-e-a-t

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.