TL;DR: I ended up yak shaving a tool for conducting a card sorting online, and wanted to share it because I couldn't find one myself. Also I don't have to maintain or host it so it should stay up for a long time, hopefully.<p>https://github.com/indigane/cardsort<p>The long version of why:<p>I wanted to conduct a quick, one-off card sorting for a side project, but after spending hours looking at the available commercial and open source solutions, I couldn't find one that worked for me.<p>The commercial ones either had too restrictive free tier with only 20 cards or so, or they lacked basic features such as open sorting vs. closed sorting, or they would have cost me upwards of $100/month.<p>The open source ones would have required me to self-host them, which I wasn't too excited about, and after trying docker-compose up on one of them and hitting errors after errors, I was even less excited so I gave up on that. I also looked for demos of open source projects that could have worked for the one-off use I needed, but no luck there.<p>I wanted to avoid spending time developing my own solution, as I already had the side project I was supposed to be working on. I also especially wanted to avoid spending time on maintaining and hosting. If I could get away with a static site, no database, thus no need for me to host it, and get it done without spending too much time on it, it might be worth it, and maybe someone else could benefit from it too. And the result was this.<p>The lack of a backend has some obvious trade-offs, but the benefit is that it is fire and forget, and I can hopefully come back years later and use it again for some other one-off thing.
In case someone reads this in search of another tool, I did a search again, and found one I had missed, that actually has a usable free tier as of writing <a href="https://uxmetrics.com" rel="nofollow">https://uxmetrics.com</a>
Nice. A quick way that I've used is a google slide setup with colored text boxes, but you don't get a nice data array back like you do here.<p>I noticed that "Export results" only outputs the first unnamed group if the user doesn't name all the groups. Looks like it try's to use the empty string as a key multiple times. You could instead have it be {[{name: "mygroup", values: []}]} or something where it doesn't matter if you have duplicate or empty group names. Or show an error message to the user on empty/duplicates. Can't trust participants to always complete the task correctly.
Clickable link <a href="https://github.com/indigane/cardsort" rel="nofollow">https://github.com/indigane/cardsort</a>