Skip to content

svix/diom

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

1,182 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

GitHub tag Build Status Server Security Twitter Follow Join our slack

Diom is the backend components platform

Diom (pronounced: dye-omm/daΙͺΙ™m) is a backend components platform for building robust, idiomatic services.

It offers high-level APIs for commonly used components such as cache, rate-limiting, idempotency, queue, and more. It has zero runtime dependencies, uses its own storage, and can be run as a single node or a highly-available cluster.

PyPI Crates.io NPM version Maven Central (Java) PkgGoDev

Useful links:

To stay up-to-date with new features and improvements be sure to watch our repo!

Interacting with Diom

Diom ships with client libraries for a variety of languages, as well as a CLI named diom.

⚑️ Feature Breakdown ⚑️
Language Officially Supported Other Notes
Go βœ…
Python βœ… Sync and async.
TypeScript/JavaScript βœ…
Java βœ… Async support planned.
Kotlin πŸ”œ
Ruby πŸ”œ
C# (dotnet) πŸ”œ
Rust βœ…
PHP πŸ”œ
CLI βœ…

Trying out the CLI

The Diom CLI is published on npm as @diomhq/diom-cli. You can run it directly with npx without installing anything:

npx @diomhq/diom-cli --help

Or install it globally:

npm install -g @diomhq/diom-cli
diom --help

Running the server

Diom is designed to be run on a cluster of machines with stable network identities (e.g., a Kubernetes StatefulSet). It's recommended to run it as a three-node cluster for high-availability and easy operations, but it can also run as a single-node.

The diom-server binary is configured through a TOML file which can be passed with the --config-path command line option. Settings can also be overridden by setting environment variables; for more information, see ENVIRONMENT_VARIABLES.md

Server configuration

There are two main ways to configure diom-server: environment vars, and a configuration file.

Configuring the server is described in the configuration section of the docs.

Observability using OpenTelemetry

Observability configuration described in the observability section of the docs.

Developing

This application is written in Rust and targets the latest stable release of Rust. You should install Rust with rustup or your favorite package manager. This application is broken up into multiple crates using Cargo workspaces.

A prek config is included and all commits are expected to pass pre-commit checks (as well as more-intensive CI checks run through Github Actions). You should install prek and then configure it to run automatically on commits to this repo with prek install.

Many helpful commands are provided in the justfile which can be invoked using Just, so you should make sure to have that installed too.

Building

cargo build in the root should build the server by default. If you want the local CLI, you'll also need cargo build --package diom-cli

Making changes

Changes should be done in branches prefixed with your username (e.g., johnsmith/my-cool-feature) and should have commit messages that describe the change. Prior to sending any PRs, commits must pass prek, just lint, and just test. Any changes that affect the client libraries / CLI will require running just codegen to rebuild all client libraries.

About

πŸ’Ž Diom - components platform for robust services

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors