Very cool! I actually went onto the same journey 5 years ago - build a solver and sudoku generator (using the same paper) and finally a web interface. In the last week I finally got the motivation wrapping it up. I planned to release it this week, but as your post is so similar, it motivated me to make it already public as I think you'll like my web interface (if you get bored of using pen & paper), it's decently polished.
You might find it interesting to read through my generation code [0], it's a slightly different approach, but also yields unique Sudokus of a certain difficulty.
I've often thought there are not really very many Sudoku patterns. You know, if you relabel a finished puzzle it's not really a 'different' solution. Also you can permute sets of 3 rows (or columns) without materially changing the solution or the difficulty in solving it. Also blocks of three rows (or columns) can be permuted, same thing.
I had a fantasy that maybe there's only 1 Sudoku puzzle, and the whole problem is to determine the labelling on the one in front of you!
[0] https://github.com/TN1ck/super-sudoku/blob/master/src/engine...
App: https://sudoku.tn1ck.com/ Repo: https://github.com/TN1ck/super-sudoku