Я бы рекомендовал вам забить на JSF и остальные серверные фреймворки для UI и научиться нормально верстать HTML5 и программировать на современном JS (например с jquery). Сами страницы соотв. писать на обычном JSP (плюс очень умеренное количество тегов) или FreeMarker.
От сервера вам реально требуется несколько богатых контроллеров (Spring WebMVC 3.0 — ок) для подготовки основных страниц, а остальное вы сможете сделать на REST/JSON, сфокусировавшись на безопасности и корректности данных. Такой подход к тому же идеален для командной работы, поскольку механизм взаимодействия между контроллерами и представлением примитивен, прозрачен и прямолинеен.
Модульность при этом реализуется довольно просто (ресурсы можно загружать из classpath, компоненты связывать с помощью Spring).