Closed SteveChapmanBCDX closed 4 years ago
What are the different components? How do they work together?
I've created a frontend/components.md file in the repository to handle these two points. However from a higher level standpoint, there is the frontend the backend bridge and ckan/keycloak/solr/GA/snowplow . The frontend calls the backend bridge asynchronously with it's session to call any other backends like google analytics, snowplow, ckan and solr. The backend bridge relies on an OIDC connection for SSO so CKAN has to accept JWTs for authentication.
Where does all the code live (which repos)? for the new UI all the code is in bcgov/ckan-ui with the exception of the deployment helm charts which are in bcgov/helm-charts
What are the benefits of the new design? The benefits of the new design are numerous. We are no longer tied to CKAN with the frontend we can replace the backend with anything we want and just make some minimal changes to the bridge and the frontend will just keep working with the new data. In the old ui, we were also tied to how CKAN was doing things which was in many cases causing a very large amount of async requests which was causing unpredictable errors as users were getting throttled by the application gateway.
We have far more control over all aspects of the new version and can build in additional things and run it on a separate box/machine which allows us to scale the frontend and backend separately and as needed. For instance we built a lot more caching into the new version. This design is much more in line with how newer applications are built in a way that ties you to other things far less than the monoliths of old.
Drawbacks Aside from having to create it initially I can't think of any we have much more control over the ui and we already had diverged from the out of the box ckan ui enough that we weren't going to benefit from any improvements to the out of the box ui.
I suppose we lose out on the more robust translations that the ckan ui has, but as far as I know we aren't using any of them other than maybe french which we have. And any developer for the full stack needs to know Vuejs as well as Python, but any developer already had to know javascript and VueJs is just a framework on top of javascript.
Let's take some time to document the new UI.