-
Notifications
You must be signed in to change notification settings - Fork 0
Introduction
Chirag Chandrashekhar edited this page Jun 25, 2025
·
1 revision
Mint is a single-file, key-value store written in Go — built entirely in public as a learning project.
This project is about understanding systems at the core — not chasing performance benchmarks, but learning how real-world storage engines are designed and implemented from scratch.
Modern developer tools often hide the low-level decisions that shape performance, safety, and correctness. Mint is an attempt to reconnect with those fundamentals:
- How does a database store and retrieve bytes on disk?
- What does a transaction really do beneath the surface?
- How do indexing structures like trees shape storage?
- A key-value store that stores all data in a single file.
- Uses a B-Tree index to organize keys for fast lookups and inserts.
- Built using copy-on-write for crash safety.
- Supports read, write, and update transactions.
- Includes TTL (time-to-live) functionality so values can expire.
- Prioritizes clarity, safety, and transparency over performance.
This repository explores:
- Memory-mapped I/O (
mmap) - Page layout and file structuring
- Manual serialization and deserialization
- Transaction design and locking
- TTL cleanup strategies
- Crash safety with copy-on-write
- Future concepts: pluggable indexing, caching, and encryption
Mint is being developed completely in the open:
- 🧩 [Project Tasks](https://github.com/users/cchirag/projects/3/views/1)
- 🐞 [Issues](https://github.com/cchirag/mint/issues)
Every step — from design notes to architecture changes — is visible.
- Developers who want to build instead of use.
- Engineers curious about how databases actually work.
- Learners who want to break past the “black box” of modern abstractions.
Mint is a work in progress — not built for production, but for people who want to learn by doing. You’re welcome to watch, clone, and explore.