With “minimal” I don’t mean least lines of code or smallest executable size. Instead tried to make it “minimal” in the sense of being as simple and easy to understand as possible.
For example I use an 8x8 array of pieces to represent my board as it is conceptually simpler than padded 10x12 or even bitboards. My move generator is also very simple to understand, I think. There’s no necessity yet for undoing moves. Everything was written from scratch to solve the current problem that I got confronted with. You won't learn a lot about the established best practices but I think the process I followed is playful and intuitive and easy to follow.
With the educational purpose in mind I decided to document the development with four explanatory Youtube videos. These videos are really the heart of the project - at least they took much longer to edit than writing the code!

At this point I’m not sure what I’m still missing that would be considered essential for even the simplest viable engine?
In a way I feel like it’s done: everything I can come up with now seems to be a somewhat arbitrary step towards a stronger engine, but also a step away from the ‘minimal’ version that just does what’s really essential. For example if I borrow some texel-tuned PSTs from other engines I’ll gain approximately 300 ELO and win most games against Stockfish set to 1350 ELO. (Just summing up piece values like I do now I win only 10% of the games.) But there’s nothing original about that and it gives the impression that auto-tuned PSTs are somehow a required component for all chess engines.
So please be my judge: Do you think there is any merit in a simple, educational engine like I present it here especially if you consider the accompanying tutorial videos? Is it “good enough” when it plays at only ~1000 ELO? If not let me know what you think the critical rating threshold would be and I’ll try to reach it in the simplest/easiest way I can come up with and make a 5th video about that.
When I was trying to find opponents for my engine I clicked through the last percentiles of the CCRL lists but a lot of the links were dead or the engines didn’t support fast time controls or had other issues. To finalize this project, I would like to submit my engine to be included in tournaments so that other beginners browsing the lists can find it as an opponent! But I’m not sure that I’m ready yet to apply there. I suppose I would have to at least implement some kind of time control support? Anything else?
The code is on github, here are the 4 videos on Youtube and I’ve provided a Windows build of the engine. If you encounter problems with running it on Windows please let me know! I’m not sure if the dependencies are installed with a normal Windows 10. If you want a Linux or Mac build that should be possible in theory, too.
Actually, any kind of feedback would be much appreciated! Even negative opinions would help me to decide how to move forward with it. I would be very happy if the videos would find a small niche audience that can appreciate them! But I'm not sure how to find and address them. You guys are well beyond what I have to say but maybe you have good ideas? Let me know of you thoughts!