For this project, we're going to explore Ruby on Rails by creating a clone of the popular website Pinterest.com. I encourage you to create an account and try it out.
It is useful to sit down and write out what you think you will need to build for our application. Our videos will cover a very specific features like user login/signup, file upload, etc. but what else do you want to allow your users to do?
At its core, Pinterest allows users to have a profile and share "pins" to their profile. It also allows them to be organized into "boards". What other features do you think would be useful for this app?
I would recommend starting with the core feature set before adding features like following other users or tagging pins.
Go ahead and create a new Rails app and a Github repository. Add git tracking to your Rails project and make sure you can push your code up to your Github repository.
We will be using the Devise gem for our user registration.
We need to use Devise to let our users create an account (sign up) and/or login to our application.
Once we have our user accounts, we can start to enforce certain behaviors such as not allowing someone to delete a pin that isn't theirs.
Heroku is a service that will host our Pinteresting project and make it possible for other people to access our application.
This will be covered in class on 5/19.
We will be using two tools for this, which will be covered in class during week 8.
Using Paperclip for file uploads
More Resources
Use Bootstrap's documentation to find CSS components that match what you are trying to build.
For our fluid and responsive Pinterest layout, we are going to use Masonry.js to render our pins on our index page.
Learn more about using Masonry.js
- Allow a user to comment on a pin
- Allow a user to organize pins into boards
- Allow a user to have a username and/or a profile
- Allow a user to have an avatar
- Allow a user to repin someone else's pin
- Allow a user to like/favorite/heart a pin
- Allow a user to search for pins
- Allow a user to organize pins by category
- Allow a user to follow another user's board or potentially all of their boards
- Using Devise
- Adding Bootstrap
- Creating our Pins
- Associating Users with Pins
- Adding File Uploads with Paperclip
- Adding Bootstrap Grid & Panels
- Adding Masonry to our Project
- Adding support for usernames
- Adding support for user profile pages
- Adding user bio and avatar
- Adding repinning
- Adding likes
- Adding Boards