I am generally not a huge fan of block-based coding, but I worked with the Snap folks while I was at UC Berkeley, and they make a very compelling case for both block-based coding and their functions-first approach.
It was really interesting to attempt a functions-first approach that was still fun - I ended up re-making similar projects for a functions-first Python course as well.
While there, I helped develop this middle school curriculum for Snap: https://bjc.berkeley.edu/bjc-r/course/sparks.html
It was really interesting to attempt a functions-first approach that was still fun - I ended up re-making similar projects for a functions-first Python course as well.