One source of truth for Marketing
A BFF that unifies 50k+ records from scattered endpoints into DatoCMS for Reservamos, so Marketing owns the content — served fast with Next.js SSR and ISG.
The problem
At Moonshot Partners I worked on this for Reservamos. Marketing needed to manage the content that powered the site, but the data they depended on was spread across many backend endpoints — tens of thousands of records with no single place to edit them. Every copy change, every new entry, meant filing a ticket and waiting on engineering.
On top of that, the way pages were rendered wasn't doing SEO or speed any favors: content was fetched at runtime, so crawlers and first-time visitors paid the cost every time.
Architecture and approach
I introduced a BFF (Backend for Frontend) as the layer between the Next.js frontend and the scattered backend services. Instead of the frontend talking to many endpoints with different shapes, the BFF aggregates and normalizes that data and pushes it into DatoCMS as the single source of truth.
- The BFF pulls and normalizes data from the multiple source endpoints
- DatoCMS becomes the one place Marketing edits and owns
- The Next.js frontend consumes DatoCMS, not the raw services
This decoupled Marketing's day-to-day from engineering and gave the frontend one consistent, typed contract to build against.
Migrating 50k+ records
The heaviest part was moving the existing data in. I built migration scripts (TypeScript) that read from the different endpoints, mapped each source shape onto the DatoCMS models, and loaded 50k+ records — normalizing fields and handling the mismatches between sources along the way. Once it landed, Marketing could manage all of it from a single, friendly interface.
Performance and SEO
With the content living in DatoCMS, I leaned on Next.js rendering to make the site fast and crawlable:
- Selected high-traffic pages are pre-generated, so their LCP stays under 1s
- The long tail is served with ISG — the first visit generates and caches the page, and every visitor after that gets the static version in under a second
- Because pages ship fully pre-rendered HTML, crawlers get complete content, improving indexing
Outcome
Marketing now edits content on its own in DatoCMS, without waiting on engineering. 50k+ records that used to be scattered across endpoints live in one source of truth, pages load fast thanks to SSR/ISG, and the pre-rendered HTML made the site easier to index.