Как создать личный сайт-портфолио на React?
todo-апп != CMS. Да, вам нужна админка. 

Общая схема: в админке есть данные о проектах, клиент их грузит через API и рендерит (можно и SSR). Делаете роут для админки, в которой нужно авторизоваться и там же редактировать контент, который (также, как и с получением, хотя в этом случае SSR кажется более лаконичным, на мой взгляд) изменяется в бд. 

Лучше всего забить да взять и сверстать статический ленд (можно и на React, но все та же статика) и разместить да хоть на том же github.io.
Думаю БД вам и не понадобится. Я делал похожий сайт на Gatsby + Contenful CMS. Только у меня динамически создаются страницы блога.