myPaintings - Painting Trading Platform - Shiny Contest Submission

myPaintings - Painting Trading Platform

Authors: David Barkemeyer

Abstract: Browse and collect over 30,000 paintings from the 13th to the 19th century. Users may trade paintings with each other. Every user has her/his personal collection and wallet. Infinite scroll and custom image boxes account for a appealing display.

Full Description:

See also my other submissions:


myPaintings is my entry in the Summer 2021 - Shopfiy Developer Intern Challenge. The task was to create an image repository. So I decided to crawl more than 30,000 images from the Web Gallery of Art and build a trading platform around them.

User management

There are two types of users: user and admin. A user is allowed to collect and trade images, while an admin manages the users and monitors the database. All users log in with a user name and password.


A user has three different views on paintings:

  • Browse: View all paintings
  • Collection: View and offer paintings owned by this user.
  • Buy: View and buy paintings offered by other users.

Each view consists of a filter, other settings and the painting display. The painting display contains picture boxes that are dynamically loaded via a user-defined endless scroll.


In each view, all paintings in question can be filtered according to the following characteristics:

  • Title
  • Painter
  • School
  • Type
  • Status (offered / not offered)

All features except Status support three operations:

  • = : Select exactly one available choice.
  • IN : Select multiple available choices
  • REGEXP : Select available choices corresponding to a regular expression

Any number of filter conditions can be added. Each subsequent condition is constrained by the results of the previous condition (e.g. after you select a particular painter, a subsequent title condition displays only the titles of paintings by that painter as choices).

Trade paintings

In the Collections view, a user can.

  • offer a painting for any price
  • change the price of an offered painting
  • withdraw an offered painting

In the Buy view, a user can buy an offered painting from another user.


Each 'user' has an account balance. Selling a painting increases the account balance, buying a painting decreases it. In the Wallet tab, a user can view all past transactions and filter them by date.


In the Database tab, an Admin can view all database tables. For demonstration purposes, all database tables are randomly initialised.


All the images require more than 4GB of disk space, which exceeds the upload bundle size for Therefore, I host the application on my private Shiny server. Obviously the images are ignored by the git repository. For reproducibility, the data folder contains a script that downloads all images from the Web Gallery of Art. If needed, an image of this application can be made available on with fewer images.

Keywords: paintings, image-repository, trading, user-management, infinite-scroll
Shiny app:
Repo: GitHub - DavidBarke/myPaintings: Shiny Web Application for the Shopify Developer Intern Challenge
RStudio Cloud: Posit Cloud


Full image:

It is one of the most intelligent ways to make money from your passions, and I admire you for that! I've recently become more attracted by the trading domain, and I have been following Dough Roller, from which I learned almost everything I needed, and I found a lot of useful tips and platforms to help me. However, now I am at the point where I am trying to figure out how I can transform my passion, music, into a source of income through trading, and your post gave me some brilliant ideas I can't wait to put into practice!