For this week's lab you and a partner will be creating Pinspiration, an idea-sharing platform that functions just like this little website!
Pinspiration requires registration to use. Users can upload, save, sort, and manage images—known as pins—and other media content (e.g., videos and images) through collections known as "pinboards". Pinspiration acts as a personalized media platform. Users can browse the content of others on the main page.
Not sure where to start? Try tackling your application in the following order...
- Draw an ERD
- Create migrations to define your database
- Define your models
- Define some basic routes
- Add controllers / actions & views
For this lab, you must work in pairs, practicing pair-programming. That means only one person should be typing code at a time. The other computer should only be used for looking up documentation.
Read this short article about strategies and rational for pair programming.
You can (and should) use git so that you can swap computers if you decide you'd like to.
You and your partner should assess how you're feeling with Rails, and based on that, decide which level you'd like to try and implement.
As always, we build our application iteratively. You and your partner should implement all the features of a level before implementing features of the next. Spend some time planning your approach to a feature before launching into it. Take advantage of the whiteboards -- they're everywhere.
Implement two models, with a RESTful interface to manage them...
- Pin
- Comment
Pins have...
- a title
- an image url
Comments have...
- a body
- a date/time posted
There is a one-to-many relationship between Pins and Comments.
Implement two additional models...
- Board
- Tag
Pinspiration should have the following associations...
- Users have many boards, a board belongs to one user
- Boards have many pins, a pin belongs to one board
- Pins have many tags, a tag can be applied to many pins
This requires setting up a many-to-many relationship, which you have not learned yet.
Suggested features...
- Instead of storing an image url as a string, allow users to upload to AWS using paperclip or carrierwave
- Users can search, sort, or filter of pins / boards / tags