Чтобы создать все в одной папке, можно сделать следующим образом:
1. Написать фронтенд на react.
2. Написать бекенд на node.
После чего, собрать frontend с помощью webpack (он соберется в папку public, точно не помню).
Далее в node возвращать как статику эту папку : app.use(express.static('path.resolve(__dirname,'./public')))
Далее, я заливал на heroku и все работало.
Чтобы реализовать в двух папках, можно сделать так:
1. Написать фронтенд в одной папке.
2. Написать бекенд в другой.
Соединятся они будут по api - из приложения react шлете запросы на бекенд, получаете данные, работаете с ними:
BASE_URL = 'heroku.com/app/my-app-1233'
fetch(`${BASE_URL}/api/todos/1')
Размещаете отдельно фронетнд, отдельно бекенд.
Я размещал фронетенд на github-pages, бекенд на heroku.
Возможно, я где-то ошибаюсь, но суть точно такая.