Our great sponsors
-
WorkOS
The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.
Having that said, I really wanted to work with Dart on the backend. My main motivation was to have my Dart classes represent a single source of truth of my business domain throughout my stack, coming down from the database right up to the user's screen. With this I want Dart to represent not only the available classes and properties, but to include satellite aspects like validation. It is a productivity boost to have the same code to validate on the backend and on the frontend. So, I created a framework that works with the concept of a PODO, a Plain-Old-Dart-Object, that represents a business entity, and nothing more. Each PODO can have several annotations that drive a set of code generators that introduce further features, like serialization (for DB persistency), property and object validation, default providers, .proto file generation (I am using gRPC protocol and instead of hand typing .proto files, they are derived from Dart classes), code to map between my classes and the gRPC protoc compiler generated code. This is not a commercial framework and a major simplification assumption is that at this moment I don't have an ORM for it, so I am only working with NoSQL databases for now. It supports ArangoDB and MongoDB, but anyone can write drivers to support other NoSQL DBs. You can check the framework here: https://github.com/squarealfa/dart_framework.
The pub.dev ecosystem is amazing too, super easy to publish to. If you've ever tried to publish to a maven repo, and then publish to pub, the difference is like night and day.
https://github.com/Hixie/house-of-rooves-daemon and other repos there.