Introducing Sinja: RESTful, {json:api}-compliant web services in Sinatra


Hi folks,

I’d like to quickly introduce Sinja, a new “framework” for rapidly developing ED-compatible, read-and-write web services in Ruby. (It’s a Sinatra extension and it leverages the excellent JSONAPI::Serializers gem for assembling response payloads, so it doesn’t completely reinvent the wheel; it’s more glue than framework.) It’s DAL/ORM-agnostic, so you can use your favorite library, or none at all, or simply reuse existing models from Rails or what have you. It includes a simple role-based authorization scheme; support for client-generated IDs, patchless clients, and coalesced find requests; error-handling; hooks for filtering, sorting, and paging; and more.

I’ve written a small demo app and a fairly comprehensive test suite, and I’m currently working on a flagship use case, but I want to be clear that this is still very new software that has not yet been fully-vetted. v1.1pre is available today and I’m looking for early adopters and testers to help me break it in (or just break it). I’m also looking for some community contributions, including a demo Ember app to go with the demo Sinja app, and documentation and code snippets for other DAL/ORM libraries (only Sequel has been put through the paces so far).

Thank you in advance for any feedback! You can find me here, on Twitter (warning: some political content), or the EmberJS Community Slack if you’d like to chat.


(Cross-posted to