I would put the client programm in the auto start. You ask your Server
via TCP if there is any birthdays. If there is one, the server returns the
data. If not, the programm closes , because its enough if you check once a
Then your server checks with the first request ( on a new day) if there
are any birthdays and if so, the server saves the birthdays. So you just
have to call your database once a day. Also you have to check with every
server call, if the date of the saved data is the current date, if not, you
call the database.