нет никакой правильной структуры, правильная структура - та, которая максимально проста и понятна, она может быть разной в зависимости от специфики проекта
еще дополню тезис о правильной архитектуре, вернее ее отсутствии тем, что если бы такая была - не было бы такой штуки как рефакторинг из-за ненадобности
типа пишешь код, получается хуйня, думаешь "что же пошло не так", ищешь решения (сам или с чьей-то помощью), внедряешь. Если получилось - качнулся, повторить. Если не получилось - не качнулся, повторить. И так без конца.