Electron is probably one route, but another might be using the native Decker .exe file - which out of the box does have the ability to auto-load a saved deck, and if the deck is locked you get more of a standalone experience.
In terms of implementing extra stuff, it may be worth looking at the Danger Zone. With Web Decker this basically gives you a backdoor into being able to execute arbitrary JavaScript, and Native Decker gains the ability to access the filesystem directory.
I'm not super familiar with how steam achievements work in conjunction with Electron but if it's possible to trigger them with JavaScript this may be the way to do it - similar for controller support. I think if you want it to work in Native Decker you'd likely need to dive into the actual code and fork it to add the features you need.
I did implement some saving/loading functionality in pure Decker for one of my games, but it's basically just using Decker's existing file handling functionality to write out and read in the various state variables I have. Not quite neat enough for something that runs in Steam but using some danger zone magic it could be made smoother.