Просто делаете RESTful API на бэке, а в качестве клиента - используете всё что угодно: SPA, натив, мобильное и т.д.
Т.е., никогда не связывайте: логику, обмен данными и их представление.
По аналогии с машинами: клиент - рычаги, сервер - механизм, передача данных - тяги.
Проектируйте - точно также, исходя из того, какие данные и как должны выглядеть на клиенте и какие "рычаги" предоставить пользователям.