first of all: DatoCMS is the most awesome Headless CMS of all I tried by far. I started using it a few days after the first after the Nested Blocks feature and used that since day 1. No other CMS works this well with component-based design and is that easy and self-explanatory for editors. Amazing piece of software.
One of the main reasons I like DatoCMS so much as a developer, is the effortless Entity-Relationship modeling + instant GraphQL API without writing any code. And I am really missing that when it comes to Migration scripts: Environments and migrations - Write and test migration scripts - DatoCMS Docs
Here I have to read API docs, no type definitions, and have to fill out tons of fields. But I am spoiled now by composing Models and Blocks in the DatoCMS web interface effortlessly
I never know what the final model will be like when I start a new task, I prototype and experiment a lot, and then at some point, I am done and happy with the result. At this point I’d like to have that as a migration script.
Something like a “migration script recorder” would really nice. This idea came to me when I made some e2e tests with Playwright. I use a Chrome Extension for that to record e2e test script code by actually interacting with the site. Then I adapt the script code as I see fit and then put the actually e2e test script in place to run automatically post-deploy.
Something analogous for DatoCMS Migrations would be awesome. I envision a workflow like so:
- start a new feature: fork the primary environment into a sandbox environment
feature-123there would be a “Record” button and I’d activate it. While “Record”-mode is active, all Model changes I perform with UI in
feature-123are recorded to JS script code that makes use of
- when I am done, I copy&paste the recorded code to a new migration JS file in my repo and make some adaptions.
- do Environments and migrations - Apply migrations to primary environment - DatoCMS Docs
So it would be a semi-automatic solution: I wouldn’t expect it to generate the perfect migration script, but 95% of all the boilerplate that I can copy-paste. Just as in the e2e test case.
A brazen request for sure, I assume this would be a lot of work.
Would love to hear if more people would like something like this and if it is possible that this happens at some point in the future.