One contract, three backends: the same REST API from Laravel, Rails and NestJS
Rhino 4 ships as three server libraries: rhino-laravel, rhino-rails and @rhino-dev/rhino-nestjs. They share no code. What they share is a wire contract: the same URLs, the same query parameters, the same status codes and the same error bodies. This post walks through one model in all three, and then the client that cannot tell them apart.
