I can't submit u some links, but I have some general design ideas u can counter check ur actual implementation to see if it does fit or u need to do some changes.
First of, you need to find/define aspects in your puzzle that you can make harder. I will use sudoko here as example. It get's harder as you remove more numbers in the prefilled puzzle. So you now have a way to generate different difficulties by removing more numbers.
The next step would be, to build a generator, that creates scenarios that fit your settings. In the example of Sudoko, a generator would run for levels that have as example 8 numbers prefilled.
I know that sudoko is a very easy example, but that is always the hard point in a game - define the difficulty steps.
If you explain your game a bit more, we may be able to assist you in this process.
After defining the difficulty steps and have a basic generator for this, the next step would be to add additional things, that can keep the user busy. Like your mentioned timer, side objectives, effects to interrupt, ... This will on the other hand, make the generator for this, way more complex or maybe kill the generator so you will have to design the levels on ur own.
It will always be a balance act of difficulty and still the ability to create an algorithm for it.
Another very important fact is, that people are always way more interested in success then failure. So don't make your puzzles to hard. Just create a bit easier ones, and for the prize of loosing difficulty, add variation or pure mass.
Also another way to push people, would be a point system or ladder system (sr don't know the correct spelling in English). Highlight who has most puzzles solved in what time.
But always keep in mind that u need to show, even if the people only solve a puzzle in 1000% more time, that this is still over or at least the average. Because otherwise, people that had problems solving a puzzle, will get demotivated, because ur game tells them they are stupid.
Always think about what you would await of a game. A side tip, study games of well payed game studios and copy some of their aspects for ur game.