You did a lot of hard work I must say. For this type of fading effect, I always use Arduino or AVR microcontroller. It is very easy to do this with the PWM pins of the Arduino. But making the project this much compact and without programming really needs good skills. Good work.