We have been polishing ZenStack for the past few months with the community. As it has been successfully used in production by some of our users, we think it’s time to share our beta with you.<p>ZenStack is built on top of Primsa ORM, extending it with a powerful access control layer that simplifies the development of a web app's backend. By defining authorization policies and validation rules right inside the data schema, your database client can automatically enforce these constraints at runtime.<p>Why we built this:<p>Based on our experience developing several commercial SaaS products, we have observed that a significant portion of code is wrapping around the database and providing an access-controlled CRUD API. These boring boilerplate codes are both tedious to write and error-prone to maintain because it is scattered within the codebase.<p>Utilizing our previous experience with DSL, we created ZenStack to bring the below clear benefits:<p><pre><code> - Centralized access control for better security and maintainability
- Less code to be written
</code></pre>
The core of ZenStack is a transparent proxy around Prisma client which enforces access policies while keeping the APIs unchanged. It allows you to build the backend of new projects faster with minimal TS/JS code, and can also be easily adopted into existing projects.<p>Some other benefits you can also enjoy:<p><pre><code> - Automatic CRUD APIs - RESTful, tRPC
- Generating client-side data access libraries (aka hooks) - SWR, TanStack Query
- A plugin system for 3rd party extension
</code></pre>
Finally, ZenStack is not opinionated toward any stack or framework, allowing seamless integration with the entire JavaScript and TypeScript ecosystem.<p>We are still in the early stages and greatly value your feedback and insights as we strive to build the best DX toolkit for developers.<p>Website: <a href="https://zenstack.dev/" rel="nofollow noreferrer">https://zenstack.dev/</a><p>Github: <a href="https://github.com/zenstackhq/zenstack">https://github.com/zenstackhq/zenstack</a><p>Discord: <a href="https://go.zenstack.dev/chat" rel="nofollow noreferrer">https://go.zenstack.dev/chat</a>
I am a big proponent of DSL. I like the approach of using the schema as the business model, with the authorization part added on through Prisma. However, how do you keep up with changes to Prisma? Specifically, how long can I expect to use a new feature released by Prisma in ZenStack?