feat(blog): add doba guest post#1464
Conversation
|
@karol-broda is attempting to deploy a commit to the Open Circle Team on Vercel. A member of the Team first needs to authorize it. |
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
WalkthroughThis pull request adds a new blog post in MDX format that explores type-safe schema migrations and data transformations using Valibot with doba. The article introduces a schema registry pattern, demonstrates migrations with chaining when no direct route exists, shows how to capture metadata during transformations without exception handling, introduces a pipe builder for mechanical transformation steps, covers runtime schema identification using match guards, and concludes with practical applications including API versioning, LLM pipeline shaping, legacy imports, and webhook normalization. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
cc @flySewa |
|
Hey Karol! Thanks for sharing this with us. Doba looks like a really cool tool. Before we go live, though, I think there are a few things we could change to help it resonate more with Valibot readers: Right now, it feels a bit like “here's a tool I built that works with Valibot.” I think it’d resonate better if we flipped that to “here's a tool I built, and here's how you can use it with Valibot.” After your opening, I suggest we focus on what Valibot users can do with doba in their projects. It might be also helpful to clearly explain what Valibot users get from this combination. You mentioned tree-shaking, but very quickly. It'd be great to highlight why these two work well together and what Valibot adds to the mix. One last thing, could you switch to standard capitalization to match the blog's format. I'm happy to revisit after you've had the chance to go through it. |
|
fixed the capitalization, expanded the valibot sections. lmk if there's anything else |
|
@karol-broda can you remove the 3 flake related files from the PR? |
|
Would you consider updating the title to something like 'Managing Multiple Data Shapes in Your Valibot Project with doba'? The current one doesn't tell much at a glance. |
|
@flySewa does this title work better for what you had in mind? |
It does. Let's go with it. |
|
hey @flySewa @fabian-hiller , all the feedback should be addressed. is this ready to merge? |
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
commit: |
Hi Karol, The blog post is ready on our end, except for one minor edit that I will complete today. It should be live in the next few days. |
|
We reach out to you before publishing it. Sorry for the syntax highlighting issue. I will fix this in the long run. It is already fixed for the Formisch docs. I can try fixing it before publishing this post. |
|
Thanks for the blog post! |
ahhh alright, i was trying to fix it locally but couldn’t really find a good fix for that haha |
|
ups |
|
PR is up: #1468 |
|
I expect to publish this in the next few days or early next week. |
|
sounds great, thanks |
| Someone needs legacy-to-AI, there's no function for that, so they chain two together and hope the intermediate shape doesn't change. Nobody writes tests for these because they're "just mapping." | ||
| Then a schema change ships and half your transforms silently produce wrong data. | ||
|
|
||
| I wrote [doba](https://doba.karolbroda.com) to deal with this ([source](https://github.com/karol-broda/doba)). It's a schema registry that works with Valibot, and the two pair well for a few reasons. |
There was a problem hiding this comment.
I think this paragraph would be better with this: "I wrote doba to deal with this. It's a schema registry that works with any Standard Schema compatible library, but I use it with Valibot, and the two pair well for a few reasons."
|
|
||
| Valibot's type inference is also what makes doba's typed migrations work. When you define a schema with `v.object()`, the inferred type flows straight into the migration function signature. Rename a field in the Valibot schema and the migration won't compile until you fix it. That feedback loop is the core of what makes this useful. | ||
|
|
||
| doba builds on [Standard Schema](https://github.com/standard-schema/standard-schema), so it works with any library that implements the spec. |
There was a problem hiding this comment.
Since we stated this in line 21, this will need to go.
|
@flySewa and @karol-broda should we publish this on Tuesday? |
|
yes, today works for me |
|
Sorry! I missed it. Let's plan it for tomorrow. I will publish it tonight. |
guest post introducing doba
the post covers:
discussed with @fabian-hiller on discord
happy to change the writing around if needed, it's in my usual style right now and i get it if that's not what you want for the blog
Summary by cubic
Adds a guest post, “One Model, Many Views: Type-Safe Transforms with Valibot and doba,” and removes the Nix flake dev shell. Updates testing deps to
vitest4.1.8.New Features
website/src/routes/blog/(posts)/same-data-different-shapes/index.mdxintroducingdoba/dobajswithvalibot; covers transforms, path finding, migration context, and schema identification; links docs/source on firstdobamention; clarifies Standard Schema compatibility; publication date 2026-06-03.Dependencies
vitestand@vitest/coverage-v8to 4.1.8 incodemod/zod-to-valibot,library, andpackages/to-json-schema; updatedpnpm-lock.yaml.Written for commit bbab758. Summary will update on new commits.