Ideas, Features, and Architecture - pickettbd/famPhotoShare GitHub Wiki

Pitch

Since the advent of the web, many helpful web apps have enabled people to share files of all types with relative ease at a low cost. Common web apps accomplishing this purpose are Google Drive and Dropbox. These and other applications are feature-rich and convenient. However, some web users find these apps unduly complex, difficult to navigate because of excess features, and confusing because they (the user) are insufficiently educated regarding the foundational principles of computing, storage, networking, the Internet, and the web. This is often a concern for families where very few family members have much, if any, technical experience or formal education in a technology related field.

As such, the task of sharing files (such as photos) with other family members is daunting. Sharing files using CDs, DVDs, flash drives, email, etc. is particularly slow, tedious, and/or expensive even if all interested individuals are at the same location. Google Drive and Dropbox would be excellent online options if everyone involved were sufficiently computer savvy. We intend to develop a web app that enables people, especially families, to share files with others – minimizing the design, user experience, and feature set in order to accomplish only this task.

Feature Set

The features we wish to develop are the following (features we hope to implement for this project are marked with an asterisk):

  • *User authentication
  • Support for multiple files types (*photos only initially)
  • *Support for multiple groups a user can belong to
  • *Support for multiple events a group can share photos about
  • *Ability to upload photos
  • *Ability to download photos when all group members have finished uploading photos
    -- *download all photos
    -- *select which photos to download
  • *Tiled thumbnails of the photos, ability to highlight/select certain photos
  • Preview of a selected photo
  • Remove/delete a selected photo
  • Email notification when all group’s users have uploaded photos to an event
  • Email notification when the photos in an event will be removed from the site (suggesting the users should download them soon)
  • RESTful API

Misc.

Front End: Angular JS
Back End: Node, Express
Database: MongoDB