Final Report - pickettbd/famPhotoShare GitHub Wiki
Description
View website here
To spare yourself uploading enough photos to see the download page in full action, please use username: "zappala", password: "A+ForUs".
-
Objective: Our goal is to develop a web application for sharing images with a very simple, user-friendly interface. It will allow people to create and join groups and organize their images into events. It will facilitate the exchange of photos taken by various people of the same "event", and be a convenient location to store these images.
-
Relevance: It is difficult to organize records of family/life events and share them with the right people. Many people today share pictures and videos on social media, but pictures taken by different people are spread out between each of their pages, or are not posted at all. Problems also arise when some family members do not use social media. This site provides a user-friendly central location to share pictures and invite other group members to do the same.
-
Features: The main features that we implemented in this site include the following:
-
User Authentication: When entering the site, a user must create a user profile, or login if one already exists. After logging in, the user can access all of the site pages, and the pages are populated with the groups, events, and photos that correspond to that user. After they logout, any attempt to access any internal pages simply redirects them to the login page.
-
Group and Event Organization: After creating a profile, a user can then create groups and within those groups create specific events. Each image belongs to a specific event, so all users that are members of a group's event can view that event's pictures and add their own pictures to that event. Users can add themselves to groups and events, and send template invitations to their friends and family to join them on the site.
-
Uploading of multiple images at a time: When the user has created or joined an event, he can navigate to the "add photos" page and upload images to the event by clicking the "choose files" button which opens up the user's file system. He can even upload multiple photos at once. Once the upload is finished the user is redirected to a page notifying them of the upload's success.
-
View and download images: When images have been added to an event, any user that is a member of the corresponding group can navigate to the "Get Photos" page and view thumbnail images of any event he selects. If the user wishes to download any images, he can select any or all of the images and click download which begins the download of a zip file containing the selected photos.
-
RESTful API: All operations of the site are performed using a RESTful API making it very easy to create a mobile app version of the site, or interact with the database in other useful ways. API Description
-
Database Schema
- Users: Each user has a versionKey, id, email, list of groups, list of pending invitations to groups, first and last name, encrypted password, and username. Below is the Mongoose database schema for our users:
- Groups: Each group has a versionKey, id, list of events (each containing an id, name, and list of photos), name, and list of users. Below is the Mongoose database schema for our users:
Future Work
The following are ideas that we have for future work:
- Ability to click on image and see it full screen
- Support for uploading and downloading videos
- Password reset through email and the site
- Actually use third-party SMTP so famPhotoShare emails are not sent directly to spam (or blocked entirely)
- See initial plans for other ideas