I built this website last year for family members who enjoy playing jigsaw puzzles on their computers. I decided to build it because I frequently heard complaints about how slow some of the more popular jigsaw apps are and how they are filled with annoying advertisements. So, over the course of many weekends and weeknights, I slowly developed this site with the helpful feedback I received from my family and friends.
The site is completely free to use. No advertisements, and no selling of user data. However, I do offer a paid tier for users that want more jigsaw puzzles, a harder difficulty mode, and a few other perks.
On the technical side, I'm using Svelte on the frontend with a tiny bit of wasm, and Rust for my backend API. I hope the site feels snappy, it's one of the main reasons why I decided to build it.
There's a demo puzzle linked on the home page for anyone who doesn't want to sign up! I'd recommend trying it on a computer or tablet as mobile is still a little rough around the edges :)
Happy to answer any questions about it!
One big comment: make the demo puzzle more prominent, and at least build it into the flow that asks a user to sign up. My first interaction with the site was clicking "Start playing for free", getting a signup page, getting annoyed, and leaving. I only went back after reading your comment.
Great point about the demo not being visible enough. I'm going to try to improve that right now.
EDIT: I just deployed an update to include the demo button near the top of the landing page :)
Those may not even be big enough issues to worry about. Someone wanting to pay for a subscription probably isn't the person who is going to want to "cheat", though inadvertant pieces snapping together might take some of challenge/fun away from the user.
Maybe if the user has a mouse with a scrollwheel, the scrollwheel could be used to rotate the piece, but then you wouldn't be able to use the scrollwheel for zoom (I don't know if you are already, as I'm on a phone), or you could just use keyboard keys to rotate.
Maybe only have the piece the user is "holding" snap to another piece of the other piece is not being covered by any other pieces. (If there is a stack of pieces, and the user drags a piece over the stack, the dragged piece should only snap to the piece on top of the stack if it is a match. Do not let any covered matching pieces snap.)
I hope the feedback helps. Again, great job!
I was planning on adding scrollwheel zoom support soon for computers, and pinch to zoom on mobile is a must have.
Regarding snapping pieces inadvertently and cheating, I might try to reduce the snap distance if someone is dragging a piece above a certain speed. That should help a bit.
For auto rotation, I’ve heard from a few people that they want rotation completely disabled, while others want it to be more challenging and not automatic. I might need to offer users an option around this.
EDIT: just noticed your point about preventing snapping to hidden pieces on a stack. Great idea too! I’ll likely give that a try :)
When you first tap or click on a piece, it auto rotates to its correct rotation.
I'm thinking about adding an option to let people choose if they want to click-to-rotate or even disable rotation completely.