You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Stencil is dynamic schema registry for protobuf. [Protobuf](https://developers.google.com/protocol-buffers) is a Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data. The challenge with using generated source code from protobuf is that for every change in proto definition, it requires to recompile dependent services/packages. This approach works for most applications but it's difficult for general purpose applications that needs to operate on arbitrary protobuf schemas. Stencil enables the developers to specifically tackle this problem.
9
-
10
-
To work with arbitrary proto schema, application need to load proto schema definition at runtime. Protobuf allows you to define a whole proto file using [google.protobuf.FileDescriptorProto](https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/descriptor.proto#L62). A [google.protobuf.FileDescriptorSet](https://github.com/protocolbuffers/protobuf/blob/master/src/google/protobuf/descriptor.proto#L57) contains list of FileDescriptorProtos. `protoc` can generate descriptorset file from proto files. Stencil heavily make use of this feature to update proto schemas in runtime.
8
+
Stencil is a schema registry that provides schema mangement and validation to ensure data compatibility across applications. It enables developers to create, manage and consume schemas dynamically, efficiently, and reliably, and provides a simple way to validate data against those schemas. Stencil support multiple formats including Protobuf, Avro and JSON.
@@ -20,21 +18,101 @@ Discover why users choose Stencil as their main schema registry
20
18
-**Flexbility** ability to skip some of the backward compatability checks while upload
21
19
-**Descriptor fetch** ability to download proto descriptor files
22
20
-**Metadata** provides metadata API to retrieve latest version number given a name and namespace
23
-
-**Clients in multiple languages** Stencil provides clients in GO, JAVA, JS languages to interact with Stencil server and deserialize messages using dynamic schema
21
+
-**Clients in multiple languages** Stencil provides clients in GO, Java, JS languages to interact with Stencil server and deserialize messages using dynamic schema
24
22
25
-
## Usage
23
+
## Documentation
26
24
27
25
Explore the following resources to get started with Stencil:
28
26
29
-
-[Documentation](http://odpf.gitbook.io/stencil) provides guidance on using stencil.
30
-
-[Server](/server) provides details on getting started with stencil server.
31
-
-[Clients](/clients) provides reference to supported stencil clients.
27
+
-[Documentation](http://odpf.github.io/stencil) provides guidance on using stencil.
28
+
-[Server](https://odpf.github.io/stencil/docs/server/overview) provides details on getting started with stencil server.
29
+
-[Clients](https://odpf.github.io/stencil/docs/clients/overview) provides reference to supported stencil clients.
30
+
31
+
## Installation
32
+
33
+
Install Stencil on macOS, Windows, Linux, OpenBSD, FreeBSD, and on any machine.
34
+
35
+
#### Binary (Cross-platform)
36
+
37
+
Download the appropriate version for your platform from [releases](https://github.com/odpf/stencil/releases) page. Once downloaded, the binary can be run from anywhere.
38
+
You don’t need to install it into a global location. This works well for shared hosts and other systems where you don’t have a privileged account.
39
+
Ideally, you should install it somewhere in your PATH for easy use. `/usr/local/bin` is the most probable location.
40
+
41
+
#### Homebrew
42
+
43
+
```sh
44
+
# Install stencil (requires homebrew installed)
45
+
$ brew install odpf/taps/stencil
46
+
47
+
# Upgrade stencil (requires homebrew installed)
48
+
$ brew upgrade stencil
49
+
50
+
# Check for installed stencil version
51
+
$ stencil version
52
+
```
53
+
54
+
## Usage
55
+
56
+
Stencil has three major components. Server, CLI and clients. Stencil server and CLI are bundled in a single binary.
57
+
58
+
### Server
59
+
60
+
Stencil server provides a way to store and fetch schemas and enforce compatability rules. Run `stencil server --help` to see instructions to manage Stencil server.
61
+
62
+
### CLI
63
+
64
+
Stencil CLI allows users to iteract with server to create, view, and search schemas. CLI is fully featured but simple to use, even for those who have very limited experience working from the command line. Run `stencil --help` to see list of all available commands and instructions to use.
32
65
33
66
## Clients
34
67
68
+
Stencil clients allows application to interact with stencil server to eserialize and deserialize messages using schema. Stencil supports clients in multiple languages.
69
+
35
70
-[Java](clients/java)
36
71
-[Go](clients/go)
37
72
-[Javascript](clients/js)
73
+
- Ruby - Coming soon
74
+
- Python - Coming soon
75
+
76
+
## Running locally
77
+
78
+
<details>
79
+
<summary>Dependencies:</summary>
80
+
81
+
- Git
82
+
- Go 1.16 or above
83
+
- PostgreSQL 13 or above
84
+
85
+
</details>
86
+
87
+
```sh
88
+
# Clone the repo
89
+
$ git clone git@github.com:odpf/stencil.git
90
+
91
+
# Check all build comamnds available
92
+
$ make help
93
+
94
+
# Build meteor binary file
95
+
$ make build
96
+
97
+
# Init server config
98
+
$ cp app/config.yaml config.yaml
99
+
100
+
# Run database migrations
101
+
$ ./stencil server migrate
102
+
103
+
# Start stencil server
104
+
$ ./stencil server start
105
+
```
106
+
107
+
## Running tests
108
+
109
+
```sh
110
+
# Running all unit tests
111
+
$ make test
112
+
113
+
# Print code coverage
114
+
$ make coverage
115
+
```
38
116
39
117
## Contribute
40
118
@@ -44,8 +122,6 @@ Read our [contributing guide](docs/contribute/contribution.md) to learn about ou
44
122
45
123
To help you get your feet wet and get you familiar with our contribution process, we have a list of [good first issues](https://github.com/odpf/stencil/labels/good%20first%20issue) that contain bugs which have a relatively limited scope. This is a great place to get started.
46
124
47
-
## Credits
48
-
49
125
This project exists thanks to all the [contributors](https://github.com/odpf/stencil/graphs/contributors).
0 commit comments