Part 1 - Basic project setup, In-memory store, WAL files for persistence. API for read / write Key-Value pairs.
Part 2 - WAL -> Data files, Adding support for Deletes. Working with tombstones.
Part 3+ - Depending on the interest this can be extended as follows:
- a distributed version
- making the values a CRDT so we can have eventual consistency
- Performance testing / Scaling
- Along the lines of Property / Unit Testing for such a system
- Learn and write Jepsen tests and much much more.