Modern Single Page Application frontends may be awkward to maintain in the application repo itself. This proposal is about how to deal with it, without being too specific on the toolchain to use.
Some of Horde's default boilerplate would be based on prototypejs and scriptaculous for the dynamic view or jquery-mobile and jquery for the basic view. While jquery is somewhat alive, query-mobile and prototypejs/scriptaculous must all be considered dead as of 2021.
Roles and responsibilities should be redistributed as technology evolves. There have been some experiments with alternative frontend technologies like ReactJs.
As an application suite, Horde strives for some consistent look and feel between its different parts and views, leaving some limited choice of colors, icons and styling to the actual application. As a framework, horde should define communication between the backend and the consuming frontend and maybe some default implementation, but should not get into the way of developers doing something entirely different. This would enable reuse of the same API for alternative frontends or mobile apps.
The default location to checkout that build is /frontend inside the backend app checkout and that path should be .gitignored. The frontend technology should include a "make-horde" executable that would build a production optimized version of the code and deliver it to /themes/default and to /js dirs. An optional make-horde-dev version with source maps and less optimization overhead may exist. The frontend technology may have a self-refreshing development version delivered by some server.
TODO: How to facilitate injecting a proper session and environment into that scenario?