-
Notifications
You must be signed in to change notification settings - Fork 3
Home
John Eagan: AI/ML, Backend
Mary Valencia: Frontend
Anthony Marin: Frontend
Travis Quigg: Full Stack
Mitchell Maltezo: Backend
- Introduction
- Purpose
- Scope
- Project Description
- Project Features/Requirements
- Diagrams
- References
Not For Thieves is a web based service made to cross check digital art within this website and see if it has been minted. We have provided a wiki here to describe what this service will do and what features will be included. The following provides a more detailed overview of the objectives and priorities of the project.
Digital Artists will now have an application to cross check their digital artwork to see if it has been minted and stolen for monetary gain outside of the artists' locust of control. They will be able to edit their profiles and see all of their digital artwork in a gallery. They will also will be alerted for any artwork that have been stolen.
Not for Thieves is a website where users can upload their digital artwork and have it cross reference with other user's galleries to see if it has been minted. Outside Users can browse through the other profiles and see others' digital artwork as well.
Database Integration - The database software used to store the website's data will be MongoDB, AWS, and Google Authentication. The data will handle reads to display user information and writes to update user information aka images and user descriptions.
Login and Registration - A user will be able to register an account with the website by providing a username/email and a password. They should then be able to login to the website and access their personal account.
Profile Pages - Each user that is a digital Artist will be able to utilize our drag and drop feature to instantly upload any images they have created. They will also be able to update their description such as name, user descriptors, and social media links.
Alerts Pages - This is where the user will be alerted for any stolen artwork. It will leave a description of where it was minted.
2.2.1 Client
the client in our project is the website we created. The website will be able to let users explore other user profiles and examine their artwork. It will also allow users to create their own profile. The information in these profiles will be stored in MongoDB and AWS. The website will be an organized platform to let the users store their artwork safely and will be notified of any infringes on their property.
2.2.2 Server
The Server will connect the client and the database. It will take the users input for which kind of labor they are interested in and send it to the web server to search through all of the users' profiles. The server sees which ones match the keywords the user is looking for. It will also take the users' profile information and store it into a database.
The users of Not for Thieves will consist of one type: Independent artists that are wanting to protect their private property aka artwork. The artist will have their artwork only prescribed to that said artist and will prevent any illegal minting.
Artists will be able to update their information and will be able to display their artwork for the general public.
Design Constraints
- Ability to implement adequate data security measures, such as encrypted password storage using hashing techniques.
- Lack of Time to implement social media links
Resource Constraints
- Lack of budget to use paid cloud services (ie. AWS, MongoDB)
- Lack of time due to the small timeframe given to create a fully fleshed out website with unique features.
- Inability to implement Twitter Login feature due to unauthorized access to Twitter.
ID: FR1
Login
- Description: User should be able to login to their account on the website using their login credentials (email and password). When logging in, user id and login status should be stored locally such that the user doesn't have to login every time they visit the website.
- Rationale: Users need to be able to provide login credentials to access their account and perform user functions on the website.
- Dependencies: FR2
ID: FR1.1
Login (Gmail)
- Description: User should be able to login to their account using the Gmail API.
- Rationale: Users can register using their Gmail account so they should also be able to login using the Gmail API verification system.
- Dependencies: FR2.1
ID: FR2
Register
- Description: User should be able to register an account on the website using a registration form, in which they provide a name, email, and password with an extra form input for confirming the password. Users should not be able to register more than one account associated with a particular email.
- Rationale: Users need a way to create an account on the website that identifies them from other users.
- Dependencies: None
ID: FR2.1
Register (Gmail)
- Description: User should be able to register an account on the website using the Gmail API. As in FR2, a particular Gmail account should only be associated with at most one account on the website's database.
- Rationale: Offering the Gmail API provides users with a trusted, secure login system independent from the website's security.
- Dependencies: FR2
ID: FR3
Profile View
- Description: A logged in user should be able to access and view their own profile by clicking a user icon on the navbar. A non-logged in user should be able to view other user's profiles, including their username, bio, socials, and gallery of images.
- Rationale: Users need a way to view their own profile and other user's profiles so they can provide content and view other user's content/art.
- Dependencies: FR3.1, FR3.2, FR6
ID: FR3.1
Gallery
- Description: Users should be able to view all images they have uploaded to their profile through a gallery of images located on their profile page.
- Rationale: Users need to be able to see and share the images they have uploaded to the website through their profile.
- Dependencies: FR5
ID: FR3.2
Social Media Links
- Description: Users should be able to link their social media accounts (instagram and twitter) on their profile, which other users can click to be redirected to the associated social media account page.
- Rationale: Enabling users to share their social media accounts incentivizes other users to explore the artist's content further.
- Dependencies: None
ID: FR4
Profile Edit
- Description: Users should be able to edit their profile (profile image, username, bio, and socials) using a form.
- Rationale: Users need a method for changing the information displayed on their profile.
- Dependencies: FR3
ID: FR5
Image(s) Upload
- Description: Users should be able to upload an image or multiple images to their account/profile using a drag and drop box on their profile. This upload functionality should only appear for a logged in user on their profile.
- Rationale: Users/artists need a way to upload their artwork to the website to share with others and be tracked for image similarity results.
- Dependencies: FR5.1
ID: FR5.1
AWS Storage
- Description: Images uploaded by a user should be stored and hosted on an AWS S3 bucket, which provides URLs for accessing/downloading these images and displaying on the website.
- Rationale: Images need to be stored and hosted somewhere that the website can access remotely and display for users.
- Dependencies: None
ID: FR6
Search
- Description: User should be able to search for different images and users based on search parameters provided by the user through a search bar input on the navbar. The results of this search should also be displayed to the user, where they can click and access another user's profile.
- Rationale: Users need a way to explore and find other user's profiles and artwork.
- Dependencies: FR3
ID: FR7
Image Similarity
- Description: Images uploaded by users should be able to be compared for similarity on a 0.0-1.0 scale with a 1.0 similarity score representing two images that are exactly same.
- Rationale: The website needs a method for determining how similar two images are when determining whether or not to alert users of potential art theft.
- Dependencies: FR5, FR5.1
ID: FR8
Machine Learning: Similar Image Detection
- Description: Images uploaded by users should go through a ML model/algorithm that detects when two images are similar.
- Rationale: Simple image pixel comparison is not sufficient for determining when an image has been stolen or not because image recolors, crops, and other transformations are not captured by simple image similarity algorithms. A more complex method using machine learning is required to detect these more complex cases of art theft.
- Dependencies: FR8.1, FR8.2, FR5, FR5.1
ID: FR8.1
Machine Learning: Image Feature Extraction
- Description: Images uploaded by users should undergo feature extraction and principle component analysis (PCA) to determine the most important features that define the image.
- Rationale: Images need a way to be compared by a ML model for image similarity, which relies on a set of input features/data. PCA is required to limit the number of features extracted and used by the image clustering model and therefore reduce the computational time while still utilizing the most important components/features.
- Dependencies: FR5, FR5.1
ID: FR8.2
Machine Learning: Image Clustering
- Description: After extracting features from images, the images should be clustered using K-means clustering into a number of groups that represent similar images.
- Rationale: By clustering the images based off the features extracted, groups can be made of images that are similar according to those features. Assuming the features are representative of the image's most important qualities, images that have been stolen and transformed in some way should be clustered with the original image and deemed similar.
- Dependencies: FR8.1
ID: FR9
Alerts
- Description: Based off the results of FR8, users should be provided an alert for every image that has been found similar enough to their own images and may have been potentially stolen. The user should be provided with their original image and the potentially stolen image.
- Rationale: In order for users to be made aware of when an image has been uploaded that is similar to their own, the website should provide alerts to users when this occurs.
- Dependencies: FR8
NFR: Security
- Authentication: Use emails to authenticate each user. Random secret key will be used to encrypt user data.
- Authorization: Uses twitter API login to ensure that the user is authorized. Will also confirm that tokens are authentic to each user. These tokens will be used to then confirm their username for the web scrape script.
- Availability: Website will need to be at least available 95% of the time.
NFR: Ease of Use
- Search Performance: Needs to make sure that search results come quick enough as to not feel slow to the user. This average will be defined as 2 seconds.