Faceboom is a Facebook-like web application with all the necessary functionalities of a social media app, such as creating, liking, saving and commenting on posts, sending friend requests, social login, real-time messaging, notifications and more.
As far back as I remember, I've always wanted to build my own Facebook. So when I gathered some necessary skills (others, I learned along the way), I got to work. Since I had prior experience with Ruby on Rails and Django, I had to choose between the two. In the end I settled for Rails. At the time I had only very little experience with frontend frameworks like React, so I made the choice to not use them and build the app exclusively with Rails.
The first thing I had to do was to design and think through database models and their relations. Some were easier than others. Probably the most difficult task here was to create an association between a User and their friends. To demonstrate, this was the line needed for the association: has_and_belongs_to_many :friends, class_name: 'User', join_table: :friendships, foreign_key: :user_id, association_foreign_key: :friend_user_id'. In hindsight, all the associations and models were pretty simple, but at the time they required a lot of scrolling on the Internet and StackOverflow 😀.
Another important step in the process was design. I tried to mimic Facebook as much as possible. For this I used Sass as a pre-processor and a little bit of Bulma. In total there were over a thousand lines of custom CSS written. Unfortunately, at the time of building Faceboom I didn't have responsive design tackeled so on small devices the site looks less than ideal. However, I might come back to the project in the future and change this.
The project taught me invaluable lessons about Rails, OAuth, JavaScript, deployment, AWS and much more.
1) Currently, Faceboom is hosted on Render, which shuts the application down after some time of inactivity, so you might have to wait a few seconds for it to load.
2) Due to a recent change in Facebook's policy, only verified businesses can use Facebook login. Since I have no business, I'm not able to use this feature in my app anymore. It was fun while it lasted 🥲.