Как понять какие части кода надо делать универсальные а какие жеско прописывать?
Если вы только начинаете делать проект и есть некоторая степень неопределённости, не стоит гнаться за универсальностью. Лучше «жёстко прописать» правила и даже продублировать в некоторых местах код, чем преждевременно сделать универсальное решение, которое в будущем окажется неподходящим. Когда проект проживёт какое-то время и требования более-менее устаканятся, вы поймёте, какие части проекта можно сделать универсальными.