captr is a full-stack web application modeled after Flickr. It was developed with a Ruby on Rails backend, PostgreSQL relational database, and a React.js/Redux architecture frontend. The backend API endpoints are based on REST principles and form the backbone of this web application CRUD functionality. This project was designed and built within a two week timeframe although planned improvements will be added over time.
captr is a web application that will allow users of all ages to view and share their photos with the world. Captr will allow users to upload their own photos, create albums, and even explore photos uploaded by other users.
- User accounts with authentication
- Users can comment on all pictures
- Quick and fast photo uploading
- Store and organize your photos in albums
- Users can edit/update their own photos/albums
- Users can explore the community and look at other users photos
- Users can save their favorite photos for further use
- React.js
- Redux
- Ruby on Rails
- PostgreSQL
- jBuilder
- jQuery
- SCSS
- Cloudinary
Photos are the meat and potatoes of the application and the main media consumable from the user.
Users can add photos to albums they own with the Add Photo
button. Users can upload any number of photos to an album they own. Once the images have been uploaded, a submit form is rendered so that users can add a title and description to their photos.
When viewing their own album, users can upload a new photo to the album only if are the owners of the album. If they are not, the upload button does not appear. The user can also update and delete their photos/albums only if they are the owners. This was done with a join association between albums
and photos
in a joins table
called album_photos
.
Albums belong to a user and can hold many photos. Any registered user can create a new album. Users can only upload/edit/ and delete photos in their own album
. photo
is associated with album
as a dependent: destroy
Comments belong to a user
and a photo
. The comments are a users way to express their feelings on a particular photo. Comments can only be delete by the user
who created it. Other users will not see the 'X' icon which will delete the comment onClick.
Infinite scrolling on the main Photo Index page would allow the user to digest more information without the need to do a hard re-render.
Having tags given by the user will allow users to more easily organize photos.
A search bar will be added so that users can search for photos by tags.