Anonymous
There are functional and non functional aspects needs to consider.
Functional for user:
1. user log in through email, phone, apple id or face id
2. user upload photos and add captions for these photos
3. user can share selected photos through email address and social media
4. user can like selected photos and make comments
5. user can search photos by time frame and captions
6. user can create album to organize photos
Function for admin:
1. manage user accounts
2. content evaluation to ensure uploaded photos meet the compliance requirements
Non-functional
1. Front end
- mobile app for Ios and android and web service
- React native for mobile app
- React for web service
2. Backend
- use Restful API for user to upload and get photos
- node.js/express as the backend technology
- use Redis as cache for fast and repeative searching purpose
3. Storage
- use Azure as the storage
- load thumnail and full size
4. Database design
- User: userid(Primary key), user name, email address, createdon
- Photo: photoid(Primary key), userid, likeid, commentid, uploadedon, modifiedon
- Like: likeid(primary key), photoid, userid, likecreatedon
- Comment: commentid(primary key), photoid, userid