hand made levels aren't bad or better than auto-generation. Both have pluses and minuses. However in your case I think you are talking about just wanting to 'modularize' your code so you don't have to physically hand-make levels.
I would suggest thinking of a process to generate your levels and have one layout that deals with variables. Whether generated blocks or predetermined, making code that can place your blocks will get you a lot further.
I would think about how you could set up a block or "grid" system. This will allow you to programmatically place blocks. One way would be to create a place-holder sprite that is invisible and fill your entire layout with 'eligible' numbered spaces. Then when you generate your level you can figure out where to place your blocks. You can create and read a JSON file - this would be you creating a system or set of numbers where you place your blocks on the grid OR you can make code that generates it making for random levels.
it won't be easy and might take a decent amount of time to set up and getting it working, but once its in place it could allow you to make a lot of content.