The framework is supposed to cover the requirements of the Microservice Patterns documented by Chris Richardson.
A Model
is a central data object, representing the domain of our business logic (eg. User, Project, Task, etc.).
- validation on the data model using multiple custom validators
- json serialisation support
- json schema generator
- value generators
- value converters
- wire-format marshaller
- omitted fields
Appkernel features a thin and beautiful Object Relational Mapping (ORM/a.k.a database access layer / repository) implementation, making access to your data a super-simple task.
- basic CRUD (create/update/delete) operations
- easy to use active record style queries
- automatically generated prefixed database ID
- index management (unique index, text index, etc.) on the database
- database schema validation and schema management
- builtin converters for serialising or deserialising the model to and from various other formats
- audited fields (eg. automatically added created, updated, updated_by fields)
- document versioning
- Bulk Inserts
- Atomic updates
- Optimistic locking
- Concurrency and transaction control
- Predefined Database Filters
- Projections
- Internal Resources
- REST services (GET, PUT, POST, PATCH, DELETE)
- HATEOAS actions on model
- model metadata and json schema
- URL query interface
- Read-only by default
- role based account management (RBAC)
- basic authentication and JWT token support
- customised, machine readable error messages
- OpenApi support
- File Storage
- JSONP
- graphql support
- Conditional Requests
- OAUTH
- rate limiting and circuit breaker
- API Versioning
- GeoJSON
- Data Integrity and Concurrency Control
- Resource-level Cache Control
- externalized configuration
- scheduler and background task executor
- health checks
- simplified logging
- enhanced logging for ops teams
- circuit breakers
- CQRS
- Event sourcing
- SAGA Pattern
- metrics
- service registration and discovery
- webflow a web state machine