WishlistJS is my pet project on pure JS. It’s a lightweight HTML page with a wishlist, configured via JSON.
The original idea came up when I once again could not find a normal service for public wishlists. Everyone had some kind of problem:
- no reservations;
- no images;
- the old-fashioned design;
- strange UX.
At the time, I already had a Tumblr blog-based wishlist with a photo gallery theme. It was inconvenient because of the UX of the Tumblr personal account, the only filtering and sorting options were tags, and sometimes images are not loaded.
I searched for alternatives on Github, but people prefer not to do such trivial software (it’s always better to write another to-do list, isn’t it?). I found some repositories as a demonstration of some architecture types. So, I decided to write my own. Started to think about the platform, the first options - PHP (as some kind of CV portfolio project) or python (to remember language, improve my skills with it and try a real project and not the standard script). Backend, reservations, Items models were on my mind.
Then I remembered Vastrik’s no-code post and realized that the backend could be partially or fully replaced by Airtable. I could fill everything out there (admin panel problem solved).
Thought about it some more and realized that the reservation function in my case is not the most relevant. That I want it easier and without a real backend. And since I planned to create a web application, I chose JS. Due to simplicity, I avoided all sorts of npm, builders, and modern frontend in general. Viva la Pure JS.
I wrote down all features, then divided them into MVPs and versions. Created repository on Github, wrote issues, and started the development.
The MVP version had config right inside the repository, which made it difficult to use and develop at the same time. A library solution was the best choice, but that would require adding a package manager to the dependencies. I remembered the git submodules and based everything on them.
In addition to this in version 1.0 I made :
- a normal mobile version;
- deployment to Netlify and self-hosted option;
- item description;
- multicurrency and other features.
Now, this project is abandoned (maybe I will make some of the planned features, but there will be no more active development). But wishlist works, it is used by me and some of my friends. I’m happy with it.