Я считаю нормальным такой подход к обучению, но нужно писать применительно к конкретным проектам рабочим. Если советовать на что-то взглянуть, то скорее всего в "правильной" CMS будет трудно разобраться, не создав на ней несколько проектов, также как и с фреймворком.
Я бы тоже советовал начать с написания фреймворка на котором будет делаться CMS (сейчас все популярные движки идут по этому пути). А CMS лучше делать под конкретные проекты, так как нельзя создать рабочую систему в вакууме.
Я вот недавно дабы разобраться со всякими "правильными" паттернами в PHP написал свой фреймворк:
https://github.com/jakulov/bun/ с использованием своих реализаций DI, ORM, MVC и т.п.
Сейчас рефакторю код и попутно описывают процесс разработки в блоге
jakulov.ru