Skip to content

Introduction

Chirag Chandrashekhar edited this page Jun 25, 2025 · 1 revision

🪴 Welcome to Mint

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.


💡 Why Mint?

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?

🎯 What Is Mint?

  • 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.

🧠 What You'll Find Here

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

📖 Follow Along

Mint is being developed completely in the open:

Every step — from design notes to architecture changes — is visible.


🌱 Who Is It For?

  • 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.

🚧 Status

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.

Clone this wiki locally