Minimum Viable Product
Instacation is a clone of Instagram built on Rails and Backbone. Users can:
- View a user's page
- Create accounts and sessions
- Create/delete albums
- Upload/delete photos
- Tag albums with locations
Phase 1: User Authentication (~0.5 day)
I'll create the user authentication framework that will allow people to sign up, sign in, and view albums. Initially all albums will be public.
Phase 2: Create Albums and Photos JSON API and Backbone Views (~2 days)
I will create API routes for albums, then photos, while creating the corresponding Backbone models and collections to fetch the data from these routes. Cloudinary will be implemented for uploading photos to the website.
Phase 3: Editing and Tagging Albums/Photos (~2.5 day)
A third party api (probably Google Places), will be used to tag albums with locations. Tagged locations will collect all the albums from that location and display them.
Phase 4: Viewing albums and photos on map (~2 day)
Using Google Maps, images and albums will be shown on a map. Albums will be shown on a map on the user's page, and images will be shown on a map on the album show page. Images without locations will be mapped to the albums location or will be grabbed from the image metadata. Albums without locations will grab locations from photos. There will be a navigation bar at the top of the page that will display all the countries, then states, then cities that albums appear.
- Allow only followers and owner to see an album. Owner will be able to share albums with others using url/passphrase.
- Map albums by location for exploring
- Search for albums by location
- Search for photos by caption
- Use captions to create tags for photos
- Allow users to select header photo for the album
- Like albums or photos, display counter of how many likes there are
- Comment on albums and photos, display counter of how many comments there are
- Tag users in photos and albums
- Infinite scroll of albums and photos
- Support for multiple open session or authentication through omniauth
- Allow user to edit their own information
- Alert user when albums/photos liked/commented
- CRUD functions
- Complex forms
- self-implemented Authentication
- Partials, helpers
- File upload (Cloudinary)
- 3rd Party APIs (Google Maps, Google Places)
- Seed Dump to seed data
- Considering: ActionMailer/Sendgrid, omniauth, Pagination
- jQuery UI: draggable/sortable
- Custom jQuery methods to place footer and resize text
- Custom API for Backbone
- blueimp for slideshow of images