Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/system76/bottle

Protobuf messages in a bottle
https://github.com/system76/bottle

continous-delivery elixir event-driven event-sourcing protobuf protobuf-messages

Last synced: 2 months ago
JSON representation

Protobuf messages in a bottle

Awesome Lists containing this project

README

        

# Bottle

Protobuf messages in a bottle.

This repository contains a `master` branch of protobuf files, and branches for
different languages we use them in.

## Installation

### Elixir

```elixir
def deps do
[
{:bottle, github: "system76/bottle", branch: "elixir"}
]
end
```

## Developing

### Patterns

- ID - When using an ID in a message, we will use a nested record instead. For example, if you wanted to pass an ID
for an order, we would use `order: %Order{id: "1234"}` instead of `order_id: "1234"`.

- Date & Time - We use string fields to represent ISO 8601 formatted date and time fields. This is built into most
languages by default, and if you are using elixir, you can simply use `DateTime.to_iso8601/1`.

### Deploying

To change a schema, simply open a PR to `master`. Once approved and merged,
CI/CD will do the heavy lifting and compile them to each language and push to
respective branch.

If you have a change to make for a language, open a PR to that branch instead.
CI will check to make sure it works, then on merge will start the publish
process described above.

## Backwards Compatibility

At this time everything is linked to a git branch, meaning we have no tag or
commit to attach to. Any breaking change you make to a protobuf will be used
immediately on next deploy of what ever project uses it. Please keep this in
mind when making changes.

## License

This project is licensed under GPL-3.0. See [LICENSE](LICENSE) for more
information.