80 likes | 200 Vues
PicShare is a lightweight alternative to social media giants, offering enhanced privacy and collaboration for photo sharing. Users can create albums and share them with friends, who can contribute by adding their own photos and leaving likes or comments. The app ensures real-time updates, utilizing a client-server model with centralized data management. It features push notifications for album changes and maintains database consistency for large photo uploads. With user-friendly design and efficient data handling, PicShare revolutionizes how friends share and interact with memories.
E N D
PicShare Akshay Gupta Daniel Levine Michael Brandt
THE IDEA • A lightweight/private Facebook/Instagram for sharing photos • Allows you to create an album and share with friends • Depending on the set album preferences, your friends can then add other photos to the album and like/comment on pictures • Your app will be updated any time a change is made to an album that has been shared with you
WHY? • Facebook/Instagram: • Poor privacy controls • Heavy infrastructure, you have to set up a profile • Photo Stream: • Does not allow for collaboration
DESIGN POINTS • Client-Server model • Centralized server with “master copy” of all data and metadata • PHP/MYSQL backend server and database , iOS app posts to the server through our PHP API • Separation of control and data • On update, server sends out XML metadata skeleton of user’s data • iOS app checks that its data is in sync with the server, and makes changes as necessary
DESIGN POINTS (Cont.) • Apple Push Notification Service (APNS) • User receives push notification upon a change to an album that has been shared with user • However, APNS is not entirely reliable, so our app functions with or without push notifications through our use of XML update • Database consistency • Since our app deals with potentially large photos, we have low bandwidthrelative to size of data • XML metadata skeleton allows us to maintain consistency. If the server doesn’t have it, neither does the user
DESIGN POINTS (Cont.) • MVC Architecture in iOS app • Core Data on top of sqlite to define model classes • NSManagedObjectContext and NSFetchedResultsController to handle updates and database queries • View Controllers to optimize scrolling • Separate metadata from image data to allow fast recycling of views for scrolling and efficient use of memory