CAESAR (or the Claims, Argument, Evidence Safety Assurance Registry) is a bespoke CMS developed for Cairn Risk to allow them to safely manage infrastructure projects for their clients. Following a successful prototype developed in 2023, the production system commenced development in early 2024.
The CAESAR system has allowed Cairn to transition from a purely spreadsheet-based workflow, to one that is tailored to their exact needs. Allowing them to deliver their top-notch services more efficiently.
Project Overview
With this project, we wanted to create a responsive system to store the large amounts of data required by risk management projects to allow Cairn to provide their services in assisting their customers with moving to renewable energy solutions.
The client was using a spreadsheet-based system and wanted to be able to import their current collection of data into the CAESAR system we were building for them, but with a collection of business rules and features in place that could not be implemented by spreadsheets.
Since the client did not have a system already in place, a lot of time was spent defining the constraints of the business logic. This meant a lot of back and forth with the client as we developed the system.
The System
With our business rules agreed upon and the UI designed, it was time to set to work. Choosing the technologies we used was important for this project to support the long-term growth of our client and ensure our system was able to handle any amount of onboarding necessary.
The Backend
We wanted to build a fast and responsive backend to handle the data management of the application. The client explained to us that some of their projects can have hundreds of entities with hundreds of relations, so we needed a system that could deliver this with good performance.
For our API framework, we decided that NestJS fit our needs perfectly, as it was scalable and efficient. We could separate all of our business entities into modules, and its use of dependency injection and type safety meant we had a very safe working environment. Instead of using the default web application framework, we opted to use Fastify to further increase the API's efficiency to support the client's growing customer base.
For the data layer, we used PostgreSQL. PostgreSQL allowed us to create all the relationships required by the business logic while staying extremely performant. It also allowed us to perform large database actions safely with features like transactions.
The largest challenge we had with the backend was building the functionality to allow users to copy entities to/from projects, but also duplicate full projects. We wanted to guarantee data integrity during these operations, so the solution we used was performing these actions in transactions. Transactions allowed us to apply the DB logic safely; in the case of any error, the DB would roll back the affected entities to the state they were in before the transaction started.
Once we had figured that out, the challenge came from generating the entities in the correct order. Some entities could not exist without others already being created; for example, Risk Relationships required Assets, Significant Accident Hazards, and Lifecycle Phases to already exist. In the context of duplicating a project, this was as simple as just generating the objects in that order.
However, when it came to copying entities from one project to another, we had to verify if the entities that made up the Risk Relationship already existed in the target project or not. If they did, then it was fine, and we could build the relationships, but if they did not, then we would have to copy the child entities over first before creating the parent entity.
The Frontend
To build a responsive and user-friendly frontend, we decided to use Vue and Nuxt. These tools allowed us to build intuitive UI elements to make using the app as user-friendly and readable as possible. For example, the Hazard Matrix is a quick and easy way to view the components of Risk Relationships, as well as quickly generating new ones.
Toasts were used to provide non-blocking notifications so users knew their entities had been created properly.
It's vital that Cairn are able to document, in-detail all of their Claims, Arguments, and Evidence. This means allowing rich-text editing features to capture all of their requirements. For this, we built a custom entity editor which features an in-depth rich text editor.
Since these projects could grow to large sizes, filtering was important for the users to be able to find what they were looking for with ease. We included multiple filtering options for titles, Risk Relationships associated with the entity, etc.
We also built a queuing system to handle entities being copied into template projects. The idea behind this was that template projects would exist so that the user could quickly generate a new project from them with common entities already included. If a user wanted to copy an entity back into a template project, the entity would be placed in a queue for someone to approve or deny before the changes are saved into the template project. This added a safety net to copying into template projects, to prevent entities from being added unnecessarily or by accident.
Since the client's current method of data storage was spreadsheets, we built a CSV upload tool to allow them to import their current data set into the new system, allowing them to quickly pick up where they left off.
Deployment
During our development process, we set up a UAT environment for the client to test with and report any bugs or requests.
To provide a stable environment, we used versioned deployments. For the backend, we deployed using Ansible to guarantee a standard deployment process and used Docker to instantiate versioned images of our software. This means that it's super simple to upgrade versions or - in a worst-case scenario - revert to an older version. For the frontend, we employed Amplify to deploy the system and keep the versioning under control.
Conclusion
The CAESAR system we delivered allowed our client to perform their work in the most optimal way, removing the cumbersome use of spreadsheets and enhancing the workflow of their job. They now have a central system that every employee can use, and a way to share their work with each other easily.
We built the system with the future in mind so that future versions can add numerous modular features, allowing our client to choose the path of their product going forward. Keeping modularity and upgradeability in mind is key for long-term projects.
If the client wishes to go SAAS, the system has the groundwork for a feature flagging system and strong user management. If the client wants a new entity or entity-relationship, it can be added with minimal effort due to the modular design. If the client expands to other geographical locations, the system and infrastructure can be easily deployed elsewhere.
A big thanks has to be given to Cairn Risk, they're a pleasure to work with and extremely enjoyable to collaborate with. We look forward to continuing work on the CAESAR project.
Client Quote
"We engaged with a number of different suppliers before finding and appointing Westland Technologies to develop our CAESAR app. As a young consulting business, this is a major investment for us - it's critical to our business that this software is developed on time and within budget. Their attention to detail, desire to please and ability to help us understand what we want and communicate this in a very clear and effective way puts them head-and-shoulders above the competition. We always feel in tune with them and every step of the way they've exceeded our expectations. They haven't just built us an App - they've helped us understand the problem and shaped the solution making us better as a result. We're delighted with their work and love working with them. We couldn't recommend them highly enough."
- Gareth Ellor, Co-Founder of Cairn Risk
The future of CAESAR
Thanks to the success of the initial prototype and phase one of the production version of the application, Cairn looks forward to further improving the system and adding more advanced functionality.
What's exciting about this project is the potential it has for upgrades and extension. For example, the potential for AI augmented tools to assist users in building safety cases and validating them.
Could your workflow be more efficient?
There's always room for improvement in the day-to-day of running a business and every business has a unique workflow. Don't settle for cumbersome software or spreadsheets - let Westland empower your business with bespoke software tailored to your needs.
Use the link below to schedule a free consultation and start prioritising your growth.