от библиотеке требуется лишь генерация правильной сетки соответствия дней недель и дат.
where t.name like replace(:search_str, ' ', '%') Думаю, что это можно как-то сделать по типу, если страница не загружена мы продлим таймаут и спросим чуть позже.
Для обучения кодингу тут много маневра останется: какую структуру заложить в элемент стека? Стек сделать списком или массивом? Как делать отладку и логирование состояний?
В общем, если строить готовое решение, то в таком проекте приключений хватит с головой.