Make do Twitter clone with a Raft based distributed key-value data store.
Project requirements are stated in prompt.md
- Run
go mod download
to download all dependencies - Compile proto files:
./scripts/protoc.sh
- Start etcd instances if using Raft as the storage implementation (Hint: look into
scripts/initEtcd.sh
file) - Check the server config (
cmd/server/config.yaml
) - Check the client config (
cmd/web/config.yaml
) - Start the server:
go run cmd/server/twitter.go
- Start the client:
go run cmd/web/web.go
- Navigate to
localhost:3000
(or depending on your config.yaml in client)
Current storage implementations:
- Memory: In-memory storage for users and posts, non-persistent.
- etcd: Distributed key-value based persistent storage
TODO Implementations:
- Zookeeper
- PostgreSQL
- Cassandra
- Consul
TODO:
- Better unit testing