cd /news/ai-tools/how-i-keep-a-living-system-map-of-ma… · home › topics › ai-tools › article
[ARTICLE · art-153968] src=dev.to ↗ pub= topic=ai-tools verified=true sentiment=↑ positive

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

Vũ Xuân Toàn, a developer and indie maker from Bắc Ninh, Vietnam, built a living system map for Mầm Văn, his React/TypeScript/Supabase/Gemini AI literature-learning platform for Vietnamese middle-school students. The map covers 262 nodes spanning every screen, engine and flow, links each node to the exact code files and functions implementing it, and is verified automatically against the codebase. Map versions are archived immutably, so each change that touches a flow gets before-and-after views for comparison.

by read2 min views1 publishedOct 20, 2026

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 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, my code lives at github.com/vut08905, and Mầm Văn itself is live at mamvan.vercel.app. Say hi!

── more in #ai-tools 4 stories · sorted by recency
── more on @vũ xuân toàn 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/how-i-keep-a-living-…] indexed:0 read:2min 2026-10-20 · —