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 test playground for learning Rails, I would create small toy projects and then implement them into this project, I worked on it on and off for a couple of years. 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 sokme of the process in another post, this post is to talk about what features I implemented. As any one can see this was based on an older design of Dribbble before their big update in 2017. 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. 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) and why rolling your own authentication/authorization implementation is a TERRIBLE idea (I rolled by own in toy apps and saw how easy they were to break). 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, 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.

I could go on about the numerous lessons I learned creating this and as I stated much of it helped improve my fundamental computer science knowledge which I am forever grateful, because of this project I found it hilarious easy to learn new technologies, this project also served as the starting point for me realising I was curious about computer science as a whole topic, I went on to teaching myself C++ and more specifically memory management (I had to know how pointers worked, so I started learning C, malloc, alloc, etc).