In the fall of 2023, we made a novel discovery as an unexpected by-product of work we did getting two very different technologies to work together.
We had delivered a Rails Website product that employed Bootstrap CSS, an industry-standard styling product, for its front end to a client organization.
The client requested us to pivot to ignore our already included bootstrap CSS front-end and instead use a different, very specific, front-end styling product in place of Bootstrap. There was not much out there to get these two technologies to run together. The risks to both parties of not thinking through the process carefully were significant. For this to work, we would have to containerize this new stipulation so that...
- it would not alter our core technology by adding changes to the core code base that would affect other clients using the same product.
- it would have to be capable of 'graceful degradation'. This is the concept where, if built thoughtfully, the parts that did not work out could go away without having to discard the parts that did that may now be entwined with the core code base.
There is a 'best practices' approach to situations like this. This situation required we build a middleware layer that could do front-end abstraction between our full-stack solution and the client's preferred framework so that the client's framework would truly, as they stipulated, supply the frontend user experience. The middleware solution had to be made out of something flexible. We undertook an environment scan that involved exhaustive test builds using many different programming frameworks. One emerged as the clear winner: ReactJS.
It was a good cause. We got to work for several months ...
- building a new API for our core product to convert our app's content to now supply content data to the middleware.
- building a middleware socket to digest our app's API content data.
- developing the ability to connect the client's niche-style component libraries to the new middleware product.
Once we were done with all three steps in the late summer of 2023 we realized that in most use cases only steps 1 & 2 were required. Strapping it to the client's niche front-end styling reduced the client's options by comparison.
Then we made another BIG connection ...
If we made one abstracted front-end website out of this middleware we could make many front-end websites. This was made possible by mixing in our sub-sites module. The Sub-sites module was a module initially developed for CHIMB.ca. It allows groups to create their own subject-specific internal sub-sites that could contain their content + adopt content others created. By combining this new middleware module with sub-sites we could now for the first time allow teams to orchestrate their content into the equivalent of a completely free-standing experience. This approach to hosting is commonly referred to as a JamStack.
We have been running a few test examples of this with ...
... that all pull their content from more capable 'hub' sites, in these cases ... ManitobaCPD.com and PrimaryON.ca.
We now have been able to generate complete freestanding websites that are powered by the technology behind ManitobaCPD.com and PrimaryON.ca. The process is that..
- a group starts a sub-site on the larger hub site ie on ManitobaCPD.com or PrimaryON.ca
- when the sub-group is ready we deploy their sub-site to a real freestanding website.
The editorial process:
- All freestanding website edits are done through the internal sub-site module that resides on the main website (PrimaryON or ManitobaCPD)
- changes to the content on the sub-site passively refresh the freestanding website every five minutes.
How fast is it to launch a site like this? On June 26th, 2024 in response the the SGFP.ca asking us to reduce their server size to something more cost effective we were able to convert the SGFP.ca site from a Rails site to a NextJS JamStack in about 30 seconds.
Are the resulting sites fast? Yes very fast. JamStacks are known for this.
An editorial process that focuses on one central hub and a separate middleware layer comes with some significant advantages from a security, cost, and facilitation of KS & KT point of view. We will unpack these advantages more in later blog posts. At this point, we are still testing and evolving this process but the preliminary findings are encouraging.
If you would like to learn more reach out to our team.