What is the problem being addressed?
In the past two decades, online social networks have changed tremendously, allowing anyone to sign up for an account on a social media platform, connect with others, and share things. However with the current consumer model treating personal information as a commodity, there seems to be less and less care given to the information shared and stored on servers that could easily be taken or made inaccessible at a moment's notice. Additionally, with the multitude of widely used platforms nowadays, it becomes harder to know which things are being shared and stored on each one, and which things you have backed up or stored on one's own device.
With this in mind, our project seeks to address some of the issues concerning personal data -- namely, allowing users to retrieve posts made on their own accounts on multiple platforms and gather them into one gallery, allowing users to view them even if such posts are deleted on the social media platform.
What is our project?
Our project is SocialPD, a mobile application available for Android and iOS that allows users to connect their account on certain social media platforms (Mastodon, BlueSky) so that they can retrieve posts made on said platform, store the content of the post locally or on a chosen cloud service, and view them even if the post is deleted. The application is front end only -- none of our users' personal data or requests are stored on any server; all user data is stored locally on the device containing the application.
How does our project work?
Our application is made in Flutter, using Dart as the primary coding language. Post retrieval is done using API calls from the given platform (e.g. Mastodon API, BlueSky API, Meta API), and data is stored locally and persistently using sqflite, Riverpod, and Isar.
Features
The final result of the project is an application that can run on iOS and Android, though most testing was done primarily on android emulators. Originally, the intended social platforms that users would be able to link from were Facebook, Instagram, and X/Twitter, but focus was shifted to Mastodon and BlueSky midway through the project after discussion between client and professor. The application allows for users to link their Mastodon account by entering in a client key and secret and an instance and then retrieve all posts made on the account to be gathered in the home screen gallery by entering the user handle in the “Search Mastodon Account” page.
Posts can be manually deleted by selecting a post and deleting it, or automatically via setting an expiration date for all posts entered in the settings screen. In the home screen, posts can be displayed in list or grid view, filtered by original platform, or sorted by oldest/most recent. Additionally, tags can be created and then applied to each post, and then optionally toggled to filter posts that do or do not contain the tag. The search bar allows users to search through posts by a keyword, and will display only posts that contain the keyword in the caption or in the tags. As an experimental feature, keywords can also be entered in the search bar to return posts that contain the keyword in the image as determined by the google_mlkit_image_labeling library.
(It should be noted that as part of the decentralized design, there is no backend server to automatically handle deletion when reaching an expiration date; the user has to reopen the app and it will then check for any deletions that need to be executed.)