002 - Single Page Application Architecture
Last updated
Last updated
Date: 2024-09-20
Status: accepted
I initially wanted to make shipclojure be a server rendered application that hydrated react on the frontend for full interactivity.
UIX supports this type of application as it has server side rendering capabilities.
Problems with this architecture in clojure:
Server side rendering on the JVM poses problems if your components use libraries from npm
and you need to write a lot of with-placeholder
functions to account for this
The frontend code would need to be bundle split the route from the backend will server render and require JS only for that specific route. This becomes cumbersome, it would require adding complex bundling logic
There is still logic available for server rendered pages that are required for SEO like blog, /about
, /contact
and landing pages This can be done throught static UIx rendering or hiccup
ShipClojure will be a backend API + Single Page Application that requests data from it.
For the application state, ShipClojure will use
The backend API can be reused for a mobile application