That is indeed the hard way! Nice work.
This is a rather large contrast to the 40m QRP receiver I'm working on which is basically the lowest part count direct conversion that doesn't suck completely and doesn't use any ICs.
My first radio was a crystal set - it's what started it all for me.
Why use three transistors when you can use three million?
My original intention was to see if I could get it to work on 40m. It could be done but it could be considered cheating, you'd have to subsample and have a reasonably sharp bandpass antialias filter which might need tweaking. The current one is just fixed value lumped LC. The ADC bandwidth is fine though, it's designed to run up to 80MSa/s, but there's no point running it much higher than the current rate, the poor old CPU wouldn't be able to cope with the downconversion filtering, that is highly optimised assembly and already uses up 70% of the M4 core at 2.04MSa/s.
Technically speaking, I guess I am subsampling already on frequencies over 1.02MHz as the sample rate is only 2.04MHz. The current bandpass filter cutoffs are 500 and 1600kHz, so there will inevitably be images present.
It might make a good video on the more detailed design aspects, from antenna through band pass filter, amplifier and onto the software. There are plenty of concepts to cover, including the ADC, DMA, PWM as well as the SDR fundamentals.