The situation
Monument renewed the lifestyle services it offers premium customers in its mobile app. The team running those services needed a customer management system (a CRM). The product team wanted to change content without waiting for a new app version.
What made it hard?
I had to rebuild five banking screens on my own. Every change had to stay traceable, and the product team had to be able to work without me.
What was I responsible for?
- I was the only engineer responsible for the Expo/React Native mobile app, the Next.js CRM, the Fastify back end and the shared TypeScript packages, at Staff level.
- I generated the code that connects the mobile app and the CRM to the server from OpenAPI and Zod definitions.
- I set up the Contentful content management system and its permissions, and designed the Intercom workflows.
- I built the release pipelines and set up the environments.
- I used AI tools to sharpen the requirements, then checked item by item that every requirement had a test. I reviewed each change separately and checked it with targeted tests.
Key decisions
Alternative
Data shapes described separately in the app and on the server
Choice
One Zod definition, with the server calls generated from it
Consequence
If the app expects something different from what the server sends, the checks flag it before release.
Alternative
One round of checks
Choice
Two separate rounds for login, data handling and data migration
Consequence
A release could slip by a day.
Alternative
A separate login for the CRM
Choice
The bank's existing access management
Consequence
I did not have to write a login of my own.
Results
- The home screen, chat, discovery, personalisation, the buttons that lead to services, the terms and the content filters can all be updated from the content system, without releasing new code.
- The mobile app and the CRM receive their data in a fixed, checked format. They do not have to follow the internal structure of the content system.
- Before each release I checked the changes in a preview and tested that the mobile app and the CRM still worked together. The system does not let conflicting releases start at the same time.
When this matters to you
- If you want your team to change content or rules themselves, without booking a developer every week, this is how it can work.
- If you handle regulated or sensitive data, a release you can trace back is a basic requirement.