Introduction and Goals
Fr[ae]ym - Goals and Requirements
Fr[ae]ym is a cloud-native, open-source application framework for event-sourced applications. It was created to reduce boilerplate in event-sourced projects: you can think of it as something similar to a database, but instead of SQL you get APIs. Users define their application's data model and business logic in a GraphQL schema, and Fr[ae]ym provides the runtime and services for both simple CRUD use cases and full event-sourcing workflows — with minimal setup and no manual database migrations.
Goals and Requirements
Functional
- Event sourcing and messaging: Publish, subscribe, and query events (Streams); support tenancy and consumer groups.
- Projections: Define projections from a GraphQL schema; query via auto generated APIs; optional full-text/geo search (Elasticsearch).
- CRUD: Maintain CRUD-style data backed by event sourcing; file storage via S3-compatible storage.
- Synchronization: Distributed locking (Sync) with read/write locks, tenancy, and application isolation.
- Authentication & authorization: Manage, validate, and apply users, roles, permissions; multi-tenancy.
- Deployments: Deploy your GraphQL schema to Projections and CRUD without downtime.
Non-functional
- Scalability: Services are designed to scale horizontally.
- Operability: Easily run on Kubernetes or on small machines with Docker.
Quality Goals
- Developer experience — Schema-driven development, auto-generated APIs, no database migrations; SDKs in Go and JavaScript so you can run larger event-sourced projects without writing boilerplate.
- Operability — Run on Kubernetes clusters or on small machines with Docker; standard observability (health, metrics, logging).
- Zero-downtime evolution — Blue/green schema deployments so new projection and CRUD types can be added without downtime or data loss.
- Multi-tenancy and isolation — Tenant and application isolation for security and compliance; event streams designed to be GDPR compliant.
- Reliability — Event store is append-only (no data loss).
- Set up in minutes — Fr[ae]ym is designed to be easy to set up and run.