Tagged Image Gallery System

I’m working on a simple decentralized concept for tagged image galleries which essentially provides users the ability to create a shared catalog of image sets.

Moving away from the centralized concept took quite some thought, but I think I have something that will work, and perhaps is best when operating in an untrusted environment.

Versioned Catalogs

Each user who wants to create content will manage their own catalogs and publish updates. Users subscribe to these catalogs and can potentially merge them together at the local level. Users should be able to retrieve older versions of catalogs and “fork” in the event that they disagree with the owner’s changes.
A “global” database will not work because it implies administration responsibilities. In this model, each user tailors their feeds to their own tastes and effectively administrate themselves.
This design is somewhat analogous to Linux’s package repository systems.

Tagging

Most image gallery systems provide a user-policed tagging system. This can cleanly be solved in two different ways.

  1. Have the owner of the catalog also manage a server which receives votes for tags.
  2. Use a holochain-based approach, where partial consensus can reached by eventually aggregating votes from other users.

The second approach is “obviously” better from a decentralized network perspective, and it allows the possibility to build in a peer reputation system for preventing sybil attacks. However, it is my impression that hash-chain-based technologies do not fit the idea of a “simple decentralized concept”, and is incompatible with an MVP.

Front-end

A fairly straight forward PWA which connects to the REST API of a running backend. Why? Designing cross-platform IPFS applications that can run on mobile and desktop is not a well documented path.

Implementation

I believe I can use the PubSub system to notify downstream users of catalog changes. Catalogs are likely pinned as normal files in IPFS, and are perhaps written using JSON or YAML syntax.

If I were to write a rudimentary tagging service in the backend (not holochain), I’m not sure what I would use as a fingerprint.

I don’t have any experience developing with IPFS and don’t really understand how the application should be structured. I’m familiar with Python, C#, and Javascript, though I’m open to learning new languages if necessary, or if it would make development easier.

4 Likes

Great! I have been looking for something like this. Is there a demo somewhere?

Perhaps others know of a useful tool for using IPFS to host/share images as an alternative to imgur or tumblr for example.

Unfortunately I never received any guidance–sign of an immature technology–so I decided to shelve it until at least they can provide developer resources.

1 Like

You were way in advance in anticipating the need. It is terrific you had a go. Well done!
I hope you have been having fun working on other stuff since then instead.