We wanted to create an API that would serve art in an unbiased way. At this moment, most forms of media that allow for the dispersion of a piece of art are heavily biased by popular opinion. To an artist, their painting may be considered art; similarly, a programmer may consider their code to be art. So on and so forth. For each individual what they may consider being art is different. By subjugating the end-user to a random piece of work, we allow for the unbiased consumption of art, free from a like or view counter and free from opinions: just art in its raw form.

What it does

Users can submit their art on our website and it is then stored on our server. When a user requests data from our server, they are served with a work that has a QR code attached. This QR code can then be scanned if they want to know more about the piece of art. This also provides the feature of proving ownership. If a file is uploaded to our system it will be indexed and stored in our database. The get feature also implements Google Cloud Platform's Machine Learning APIs to provide an explicit content moderation system, as well as giving tags to the data. We do not do this while accepting data, as forms of art can be explicit. However, to protect the user we implement it while giving out data.

How we built it

We built the website using Angular.js, which collects information from the user if they want to submit a piece, and also implements the API if they want to view a random image. If data is being submitted, it is sent from the Angular.js environment and stored in a Google Firebase. Additionally, the image is also sent to a Python script via Flask. This Python script attaches a QR code using the link from Firebase to the image and styles it. When a user requests an image, this final image is fetched and is given to the user.

Challenges we ran into

Image editing turned out to be complex in Angular.js, hence we decided to use a Python script to compute it. Syncing the Python script to our site turned out to be a learning experience as we had to learn to implement Flask.

Creating the Angular.js website was also a substantial task. It provided a great UI but took a while to implement. Implementation of a file grabber turned out to be particularly difficult. This component is required to be nested however Angular.js prohibits this. To overcome this challenge, creating a new module proved to be effective.

Accomplishments that we're proud of

To be honest the entire project feels like a great achievement. Some parts that stuck out however were:

  • Implementing Google Machine Learning APIs
  • Creating our product as an API
  • Implementing the website itself and
  • Delegating information between python angular.js and Firestore.

What we learned

Other than having a background in web development and a grasp of the programming languages used, the concepts that we used were all new for us and we had to build each of them from the ground up.

What's next for ArtSafe

Seeing someone use the API would be amazing. We would like to make some processes a bit more streamlined and maybe test the product out a bit more. We also would like to scale to a larger set of data.

Share this project: