Current features are described in detail in the user manual. They include:
- Asynchronous persistence API using Scala futures and four different Scala streaming libraries.
Cassandra, MongoDB, SQLite, and in-memory back ends.
- Supports flexible construction of your domain model using standard Scala types such as case classes, options, sets and lists.
- Compile-time DSL to express keys, queries, and indexes.
- User control of sharding/partitioning.
- Polymorphic traits and controlled vocabularies.
Boilerplate-free description of your domain model.
- Pre-built repositories with simple, reactive APIs.
- Configuration-level optimistic locking.
- Pre-built integration tests that exercise your repositories against a real database.
- Fully featured in-memory repositories for use in other integration testing.
- Test data generation.
The current high-priority features and improvements are:
- Use type classes as a better approach to type safety with persistent types, key values, and queries.
- Free monad wrapper around the repository API.
- Schema migration framework.
- Replace home-grown reflection utilities with shapeless/circe.
- First-class support for optional values.
For more information, please see the story board. Tickets are roughly ordered in order of current priority.