Current features are described in detail in the user manual. They include:
- A finally tagless API that allows you to do persistence with the effect of your choice, including Scala futures, IO monads, or a purely synchronous, blocking approach.
- Streaming query results with any of 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 repository with simple, typesafe, effectful 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.
- Schema migration framework.
- Test data generation.
The current high-priority features and improvements are:
- 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.