Если на чистой NodeJS, то можно тупо вешать setTimeout. Но иметь ввиду, что при перезагрузке сервера задания не сохранятся, потому если важна сохранность - то класть копию куда-нибудь в БД или на диск, а при выполнении удалять оттуда или помечать как выполненные, при запуске сервера - возобновлять те, которые не были выполнены.