r[ae]ym

Constraints

Technical and organizational constraints

This section captures technical and organizational constraints that affect the architecture.

Technical Constraints

ConstraintSource / Rationale
GoAll Fr[ae]ym services are written in Go.
PostgreSQLPrimary datastore for Streams, Projections, CRUD, Auth, Deployments; chosen for ease of self-hosting and well-documented backups. User must have permissions to create databases; no connection pooler in front of Fr[ae]ym.
S3-compatible storageRequired for CRUD file storage (S3-compatible).
Elasticsearch (optional)Optional to enable full-text and geo search.

Organizational Constraints

ConstraintNotes
Open sourceSource code and contribution workflow are in the Fraeym repository; roadmap and active work are tracked in GitHub Projects.
Container registryImages from GitHub Container Registry (ghcr.io/fraym/...).
ToolingGo checks (golangci-lint, govulncheck), JS checks (eslint, prettier), E2E tests in GitHub Actions.

Conventions

  • Repository layout: cmd/ for service entrypoints, service/<name>/ for each microservice, sdk/*language*/ for client SDKs, pkg/ for shared Go libraries, internal/ for non-exported shared code, charts/ for Helm, docs/ for the documentation site.
  • Dependency injection: Google Wire is used for service composition.
  • Documentation: Next.js + Fumadocs; content in docs/content/.

On this page