A distributed key-value store prototype built with Go and gRPC, supporting Put/Get operations and live subscription updates (pub/sub).
Designed for learning distributed systems concepts (replication, streaming) with minimal setup.
- Fully backend + CLI focused — no extra UI overhead
- gRPC streaming for live updates
- Thread-safe in-memory KV store
- Pub/Sub support — clients receive updates when keys are added/changed
- Easy to extend for multi-node replication
- Lightweight and fully testable locally
├── proto/ # Proto files
│ ├── kvstore.proto # KV gRPC definitions
│ ├── kvstore.pb.go # Generated Go messages
│ └── kvstore_grpc.pb.go # Generated gRPC server/client code
├── server/ # gRPC server implementation
│ └── main.go
├── client/ # CLI client for interacting with the server
│ └── main.go
├── go.mod # Go module file
One-liner explanation:
proto/→ defines KVStore gRPC service & messagesserver/→ in-memory KV gRPC server, handles Put/Get/Subscribeclient/→ CLI client to interact with the server in real-time
- Clone the repo:
git clone https://github.com/devaniketh/kvortex.git
cd kvortex- Initialize Go module:
go mod tidy3.Compile proto files (if needed):
protoc --go_out=proto --go_opt=paths=source_relative \
--go-grpc_out=proto --go-grpc_opt=paths=source_relative \
proto/kvstore.proto
4 .Run the server & client together in diff terminal
go run ./server
go run ./clientCommands & Description
put <key> <value> - Add or update a key-value pair
get <key> - Retrieve the value of a key
exit - Close the Client
-
Language: Go
-
gRPC for communication
-
Protocol Buffers for serialization
-
In-memory store (map + mutex) for simplicity
MIT License © 2025 Aniketh Deb