Backend development is often saddled with repetitive tasks that not only add to development effort, but also lead to fragile systems with scattered implementations for authorization, data access, and integration with external services. What if we take a declarative approach where we define models, relationships between entities, access rules, and external services? Such a system would be easy to express, examine, and extend. We can then build an API within a few minutes and have confidence that it will meet our current and future needs.
In this talk, we will explore how to build such a system focusing on considerations such as the language to express models and associated access rules, define external services and their interactions with the rest of the system, and deployment considerations. We will also discuss what it takes to expose APIs such as GraphQL and REST. Finally, we will examine special considerations in implementing such a system in Rust.