Да, ругается на null. Это давняя проблема и вроде в новой версии нексус-плагина ее решили, но это новый плагин без обратной совместимости, я пока на него не переходил. Так что ёжики плакали, кололись, но продолжали есть кактус :)

Можно сделать так:
return ctx.prisma.post.update({ data: { title: title === null ? undefined : title, text, }, where: post, })
То есть прописать title === null ? undefined : title. TypeScript здесь понимает, что если прилетел null, то будет undefined. Таким образом в титл не может попасть null.

И здесь важно понимать почему нельзя передавать так: title || undefined. Дело в том, что пустая строка "" тоже расценивается как отрицательный результат. Таким образом, если прелетит пустая строка (что технически возможно и допустимо), то вместо нее будет передано undefined и данное поле не будет обновлено.

И да, можешь на фронт перелезать. Для начала просто выведи списки (то есть создай страницу для вывода, запроси данные и выведи их). Можешь для примера посмотреть страницу вывода списка пользователей. Да и в репозитории самого freecode.academy можешь смотреть. Там примеров много и все по одному образу и подобию.