r[ae]ym

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

  1. 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.
  2. Operability — Run on Kubernetes clusters or on small machines with Docker; standard observability (health, metrics, logging).
  3. Zero-downtime evolution — Blue/green schema deployments so new projection and CRUD types can be added without downtime or data loss.
  4. Multi-tenancy and isolation — Tenant and application isolation for security and compliance; event streams designed to be GDPR compliant.
  5. Reliability — Event store is append-only (no data loss).
  6. Set up in minutes — Fr[ae]ym is designed to be easy to set up and run.

On this page