Skip to content

devaniketh/kvortex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

KVortex

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.

Features

  • 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

Repo Structure


├── 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 & messages
  • server/ → in-memory KV gRPC server, handles Put/Get/Subscribe
  • client/ → CLI client to interact with the server in real-time

Setup ⚡

  1. Clone the repo:
git clone https://github.com/devaniketh/kvortex.git
cd kvortex
  1. Initialize Go module:
go mod tidy

3.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 ./client

CLI commands:

Commands & Description

put <key> <value> - Add or update a key-value pair

get <key> - Retrieve the value of a key

exit - Close the Client


Tech Stacks

  • Language: Go

  • gRPC for communication

  • Protocol Buffers for serialization

  • In-memory store (map + mutex) for simplicity

License

MIT License © 2025 Aniketh Deb

About

A distributed key-value store prototype

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages