It's pretty boring to be honest, which is probably why it's so reliable. I sync media using rsync, the movie and stream player is omxplayer, the image and news feeds use Lua and Love2D, and the scheduler is a simple algorithm which was written first in LuaJIT, then Python and soon in Go because of speed and concurrency. The players push their status to a central server for monitoring purposes but I'm replacing that with pull and Ansible. The customer interface is web2py and the schedule creator is desktop wxpython running on Linux, the Mac and Windows.