For all the scenarios, our backend and frontend apps were separate in terms of code and were communicating only via REST interfaces.
There are 3 options which we have tried they are
Option 1
Webjars look like a miracle and several sbt or maven plugins can help you out with the minification, compilation, linting, etc. of your frontend project. This might go well for some.
Some plugins were missing or their configuration was difficult. Webjars are not always up to date. It will work but that is not up to the mark
Option 2
We have tried separate servers, but for most actions, still, need both frontend and backend servers. Developing backend or frontend separately was faster this way, but in my opinion, if you are to supply both - your development process should help you with it.
Option 3
We are using this with a sbtWeb plugin that allows you to set playRunHooks to whatever actions you would like to run with your project. The idea is to run a javaScript tool which will do all necessary front end job
For example:
playRunHooks += {
Process(Seq("npm", "install"), file(portal)).lines.foreach(println)
RunSubProcess(portal, "npm", "run", "watch")
}
you let Play Server to serve your static content but ignore its changes. There is plenty of JavaScript build tools, plugins, and templates to help you out.
Hope this scenario helps you to come with a way to combine play-framework and angular.