# How I keep a living system map of Mầm Văn — every change, before & after

> Source: <https://dev.to/vut08905/how-i-keep-a-living-system-map-of-mam-van-every-change-before-after-5f79>
> Published: 2026-10-20 18:06:45+00:00

Hi, I'm **Vũ Xuân Toàn (Vu Xuan Toan)**, a software developer and indie maker from Bắc Ninh, Vietnam, and the founder of Vu Xuan Toan Tech. In my [intro post](https://dev.to/vut08905/hello-im-vu-xuan-toan-vu-xuan-toan-a-software-developer-indie-maker-from-vietnam-5bko) I mentioned **Mầm Văn** — the literature-learning platform I'm building for Vietnamese middle-school students (React, TypeScript, Supabase, Gemini AI). Today I want to share the part of the project I'm most proud of, because it isn't a feature for users — it's how I keep the whole system *understandable* while it changes every week.

Mầm Văn has two big portals (teacher and student), an AI content studio, a question bank, XP and mastery engines, a knowledge tree, grading workflows, notifications, an admin area… After a few months of intense building, "how does this all connect?" stopped being a question I could answer from memory.

So I built a **complete map of every flow in the system** — 262 nodes covering every screen, every engine, and the relationships between them (for example: *publishing a lesson → notifies students*, or *rejecting a gift request → refunds the student's total XP wallet*). Every node also lists the exact code files and functions that implement it, verified automatically against the codebase.

The map only stays true if it can never drift. So I work under one strict rule:

You can see both, live:

The part I like most: whenever a change modifies a *flow*, the history page automatically gets two buttons — **"flow BEFORE this change"** and **"flow AFTER this change"**. Every version of the map is archived immutably, so I can reopen exactly how the system looked before any change and compare. When I recently removed an AI status bar from the question bank, the before-map still shows its node in the tree; the after-map doesn't. That makes design review honest: nothing about the system's shape is ever lost or misremembered.

Because an indie maker's scarcest resource isn't code — it's *clarity*. The map has already caught wrong assumptions before I wrote a line of code, and it lets anyone (a collaborator, a teacher using the platform, future me) understand a fairly complex product in minutes.

If you build long-lived side projects, I'd genuinely recommend stealing this workflow: one living map, updated in the same commit as the code, with archived before/after versions.

—

I'm Vũ Xuân Toàn. My home on the web is [vuxuantoan.me](https://vuxuantoan.me), my code lives at [github.com/vut08905](https://github.com/vut08905), and Mầm Văn itself is live at [mamvan.vercel.app](https://mamvan.vercel.app). Say hi!
