Что сразу бросилось в глаза в registerUser. Вы на ошибку валидации делаете resolve, хотя логичнее делать reject. Resolve в вашем случае - это успешная регистрация.
По поводу pet-проектов. Вот вы выходите на собеседование и показываете ваш pet-проект на JS. В это же время собеседуется другой кандидат с похожим pet-проектом с типизацией на TS. Как думаете, кому дадут предпочтение?