As for the SPI flash size: they are almost always given in Mbit, so 16Mbit is 2MB hence the confusion if I were to guess. You would be looking for a 128Mbit one to get 16MB.
Nice work and keep on tinkering!
What other parts are out there that are similar to this? It would be fun to play with one that has a little more RAM, and maybe a faster clock rate.
I also started with easyEDA for my first few PCB's, it is very intuitive.
Other notes: 1. Differential routing was mentioned, but no mention of impedance. It's a short run so it's probably fine (I've run high speed over jumper wires before) but it should be noted. 2. There's merit to it being a very simple board, but an SD card connector may have saved the usability and likely really expanded what you can do with the system. 3. The workaround to load directly into DDR was good thinking. 4. Again understood for simplicity but LDO-ing almost 4V down for a core rail is unideal. I couldn't easily find specs on how much current will be taken on this (or any) rail, but just remember that every milliamp here is 4 milliwatts burned as heat. 5. Good to use a simple SoC like this. Integrating DDR and QFN show a real reverence for the challenges one can run into with modern LP5 and BGA parts. Really don't want that so early in the education.
Overall good article, and good work