Pixolid - Solid photo manager

As a part of my thesis, I created a Solid photo manager application called Pixolid. It is built on top of the base from generator-solid-react.

The application’s code is available at: https://github.com/carloss8/pixolid/
The application is live at: https://pixolid.netlify.com/

Following features are implemented (more verbose description in the GitHub repository):

  • uploading new images with a description,
  • setting access rights to uploaded images,
  • viewing images posted by the user,
  • viewing images posted by user’s friends,
  • viewing the image detail (image, author, date of posting, description, comments, likes),
  • adding comments to images,
  • adding likes to images,
  • setting the folder where the data are stored.

I am pretty much new to Solid in general, so I would really appreciate any comments or feedback from you :slight_smile:


Could you build it and have it in a build folder on GitHub. It will be easier to test.
Then you can also make it accessible as a GitHub.io web app. Click on settings in github

Sounds really great. Yes, would be cool if you host it on GH pages or somewhere

I started it locally and first experiment succeeded! Great work!

Who is giving me comments and likes for my first pic? :wink:



@bourgeoa @aveltens Thank you both, I was trying to deploy it to the GitHub Pages, but I was having issues with the client side routes in React Router. I tried the following suggestions: Notes on client-side routing, but unfortunately I was not able to get the routes to work properly, even with the suggested solutions. Would you have any ideas how to make it work?
I may at least push the build into the build branch to be used with a static server.

@aveltens Oh nice, thank you, glad you got it working! I added a comment to your picture :slight_smile:
EDIT: Oh I can see that the comment does not get through, I suspect there are some problems with access rights. Although I was testing the application with multiple users with no issues.


Indeed, gh pages is not so easy with client side routing. I tend to not deploy such apps to GH pages but to my own server instead.

Yep, cannot see anything. How did you implement it? Will comments/likes go to my POD, or stored at yours and link to my data? If the latter, how do I get aware of that? notification via inbox?

Yeah, as I was trying to search for the solutions I encountered that multiple people are having issues with it.

It is implemented so that the application sets .acl for the given picture with append rights to be able to register the information about the comment which is stored in my POD. It seems as if the .acl is not created or accessible.

There is only a dedicated acl for the image, not for comments and likes. The image acl has Append permissions.

I am not really happy with this solution, since it allows anybody to append (possibly illegal) data to a publically available file of my POD… I think it would fit the solid philosophy better if you store your comments and likes at your own POD and send my a notification to my inbox, so that I could descide to link back to your comment / like or not.

But the specification is not finished in this area and it is really great that you have a working app, that could be a starting point to discuss what we want and improve the spec regarding this topic.

1 Like

I think you will have to clean up the data model here and there. I hope to find time for more detailed feedback soon, just one example:


You state that “1554815783723.9011.ttl” is itself a “Like”, but that is not true, it is a turtle file (information resource). The Like should get a different URI. Proposal:

https://angelo.veltens.org/pictures/likes/1554815783723.9011 (information resource)
https://angelo.veltens.org/pictures/likes/1554815783723.9011#it (the Like)

You should skip the .ttl file ending, because from a HTTP perspective the resource can be served in different representatinos (turtle, JSON-LD, …) and you should use relative URIs within the file to makes things more readable and less coupled to the absolut file location.


Looking good @carloss! Nice use of the solid-react-sdk. Feel free to reach out with any questions, comments, or suggestions on it. We appreciate any feedback we can get.


This is really cool! Fired it up locally and uploaded a few pictures. I like how cleanly it is to follow the data in the pod. Time to test “friends” photos!

Thanks for sharing this

1 Like

What’s your WebID? Let’s be friends :smiley:


I have lots of webIDs, actually, because I keep breaking them during development. Also, testing features like registration lead to lots of accounts!

The one I’m currently using is https://jmartin.inrupt.net/profile/card#me

1 Like

Oh I see, that is weird, If the image has append rights enabled for public, then I should be able to append the info about my comment stored in my POD. The log returns 403 while adding a comment to your picture.

I can see your point here. Appending can be problematic in this area. I guess it could be handled in a way you describe. For me it was kind of difficult to decide how the data should be propagated.

I see, that is true. The ending should be dropped, and could be solved as you suggested. I think the data model is definitely to be worked on. Thank you very much @aveltens for the kind words and your constructive suggestions, I really do appreciate it. :slight_smile:


Thank you @justin for the kind words! To be fair the solid-react-sdk helped me a lot to get oriented in the world of Solid and kickstart the development. I don’t think that I came across any issues while using it. As I looked at the timeline of releases, there is a lot to look forward to! :slight_smile:

Thank you @james.martin for the kind words and trying the app! I added a comment to your picture. It seems that this time it came through, so you should be able to see it. :slight_smile:

Also, I am using the following WebID: https://carloss.solid.community/profile/card#me, you can add me if you want, I should have 2 available images in my POD. :slight_smile:

1 Like

This might be caused by the Origin you use? From what domain are you using the app?

I totally understand that. It’s good that this did not stop you from providing working sofware, I appreciate it. The details can be discussed and changed if needed.

I have to thank you, for your great contribution to Solid.

How did you come across Solid? You registered just recently here. Have you been active on gitter or elsewhere before, or just developed the app “in secret” as a surprise? :smiley: What are your plans?

1 Like

After I tried it in practice now, I see that I misunderstood it. My Likes and Comments are indeed stored at my own pod - which is totally great - and we are talking just about adding the “inverse direction” here.


Is there any chance that you could publish a live demo, for maximum effect?


I am not sure about the origin, I am using the development version. As for the WebID provider, I am using the solid.community.

I came across Solid as a part of the thesis assignment which I chose at the uni. After that I started to get to know it more, and eventually developed Pixolid. I liked the idea of linked data and ownership, so that is why I chose it. My plans mainly are to contribute to the community with the app :slight_smile:

Oh, alright.

Thank you @kidehen!
@bourgeoa @aveltens I managed to set up a live demo for the app. So it is now available at


Hope everything is set up correctly.


Great stuff!

I was able to add some images to one of my pods.

A few comments:

  1. Ideally, you want to look up the users WebID to determine the preferred storage location i.e., default location used as your apps root
  2. It is unclear from the UI if sub-folder references are supported i.e., would public/pixolid imply the “pixolid” sub-folder
  3. After I successfully upload images I have no idea (bar my underlying system knowledge) as to the location of my images or who I am logged in as etc…

I moved my photos to my preferred location, but now I have issues when I visit the apps home page. It perceives my new location as invalid.