Split an Inertia monolith into an API, an SSR web app and a native mobile app — so the pages could finally be indexed.
The challenge
The original product was a Laravel + Inertia.js + Vue 3 monolith. Everything rendered on the client with no per-page meta tags, which meant a practice-test product that lives or dies on search traffic had no working SEO at all — and no route to a mobile app.
What we built
Outcomes
How we shipped it
The SEO was the business case
Inertia renders on the client. For an app whose customers arrive from a search for a practice test, that meant no per-page title, no description and nothing for a crawler to index. The rebuild was not a refactor for its own sake — it was the only way to get the pages into search results.
One API, three consumers
Pulling the API out of the monolith first meant the web front end and the React Native app became consumers of the same contract, rather than the mobile app being a second implementation of the same rules.
Sharing without coupling
A shared package carries the types and common logic across web and mobile. It is the difference between two clients that agree and two clients that drift apart over a year of changes.
Stack
Aprojectlikethis?
One-page brief, two-week sprint, real exit ramps.
next kickoff · week 34
