Drubbble

Ressurecting Old Work Jan 14, 2018 Tags: Web Development Rails Javascript Database

Dribbble!

Create an Account and mess around with it here please note, user posts are stored locally, so every time the heroku shard awakens images are wiped, I’ll shift to S3 or another third party hosting site, but in the mean time please create an account and upload your own images to test it out!

So this is actually an older project, this was my ‘post various small projects to learn Rails’ big project, essentially to see what I can do with no training wheels. Even though it’s old, out of all the things I’ve made I am still the most proud of this. So over the weekend I decided to troubleshoot and update it enough to at least getting it running on Heroku. Working on troubleshooting was actually pretty fun, I hadn’t done any Ruby or rails work in years and getting back into the flow of things was very easy.

I had much to update to get it running on heroku, I will document some of the process in another post, this post is to talk about what features I had implemented. As any one can see this was based on an older design of Dribbble before their big update in 2018. Unforunately as of this post I no longer have any screenshots of Dribbble’s old layout to compare and contrast with my drubbble project but I strived for near 1:1 in nearly all aspects. That alone was quite a bit of fun from a styling/SASS perspective.

I implemented the most important part of Dribbble in my re-creation which was the ability to create an account and upload photos. There was much I learned on this feature which really served as a great bed rock of general computer science principles. My main take away was relational databases (from here I went on to learn and practice both SQL but also database normalization). I was fascinated by how associations, primary keys all worked together and learned exactly what ORMs were doing, where their strengths were and were they struggled compared to using SQL directly (this project taught me that I’m not a fan of the black box mindset, I NEED to know the fundamentals of everything). Also learned QUITE about authenticiation/authorization what the differences are, how it works on a fundamental level, I will admit to getting sidetracked from the project for a month or two to learn this indepth, to include being able to implement a rudimentary auth/auth flow and why rolling your own authentication/authorization implementation is a TERRIBLE idea. One of the parts I’m most proud of building is the :after feature once the user made their account the profile portion was auto populated with generic/empty data for the user to fill in at a later time. Creating this feature allowed me to get a feel for HOW to search through documentation to problem solve.

Another feature I was proud of implementing was the tags system which ended up functioning exactly the same as Dribbble’s at least from a presentation standpoint, I imagine performance wise theirs shits on mine. I was proud of this mostly because in order for me to figure it out I had to actually sit down and draw out the database relationship in order to implement it, at first I thought that was a sign of me not understanding database design enough to implement it correct without the 'help’ of a diagram but soon realized that, database diagrams are absolutely common and it would be amateurish if I DIDN’T have a diagram. Created the ability to view all posts from any tag, within their own page. The tagging system was a pain because at no point did I think to unify the tags, so in the first go around, I had tags with different formatting, it was a simple fix but still funny looking back because at the time I definitely ran my hands through my hair if I remember correctly.

Utilizing what I learned from the tagging system, I was able to go forward and add a followers/following system in the vein of Twitter’s to mimick the same feature from Dribbble. Looking back I could have implemented it a bit better from an ORM/database perspective.