<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vũ Xuân Toàn</title>
    <description>The latest articles on DEV Community by Vũ Xuân Toàn (@vut08905).</description>
    <link>https://dev.to/vut08905</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4192517%2F2f6208c5-ec15-4a70-9c5f-646552cd0f23.png</url>
      <title>DEV Community: Vũ Xuân Toàn</title>
      <link>https://dev.to/vut08905</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vut08905"/>
    <language>en</language>
    <item>
      <title>How I keep a living system map of Mầm Văn — every change, before &amp; after</title>
      <dc:creator>Vũ Xuân Toàn</dc:creator>
      <pubDate>Tue, 20 Oct 2026 18:06:45 +0000</pubDate>
      <link>https://dev.to/vut08905/how-i-keep-a-living-system-map-of-mam-van-every-change-before-after-5f79</link>
      <guid>https://dev.to/vut08905/how-i-keep-a-living-system-map-of-mam-van-every-change-before-after-5f79</guid>
      <description>&lt;p&gt;Hi, I'm &lt;strong&gt;Vũ Xuân Toàn (Vu Xuan Toan)&lt;/strong&gt;, a software developer and indie maker from Bắc Ninh, Vietnam, and the founder of Vu Xuan Toan Tech. In my &lt;a href="https://dev.to/vut08905/hello-im-vu-xuan-toan-vu-xuan-toan-a-software-developer-indie-maker-from-vietnam-5bko"&gt;intro post&lt;/a&gt; I mentioned &lt;strong&gt;Mầm Văn&lt;/strong&gt; — 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 &lt;em&gt;understandable&lt;/em&gt; while it changes every week.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem: the system grows faster than memory
&lt;/h2&gt;

&lt;p&gt;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.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  The rule: the map is part of the code
&lt;/h2&gt;

&lt;p&gt;The map only stays true if it can never drift. So I work under one strict rule:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Before&lt;/strong&gt; changing any flow, I open the map and identify which nodes and relationships the change touches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;After&lt;/strong&gt; the change, I update the map, regenerate it, and ship it &lt;strong&gt;in the same commit&lt;/strong&gt; as the code.&lt;/li&gt;
&lt;li&gt;The map and a full &lt;strong&gt;change history&lt;/strong&gt; are republished automatically to my website in the same round.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can see both, live:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🗺️ &lt;strong&gt;The system map&lt;/strong&gt; (interactive, click a node to light up its cluster): &lt;a href="https://vuxuantoan.me/so-do-mam-van.html" rel="noopener noreferrer"&gt;https://vuxuantoan.me/so-do-mam-van.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📜 &lt;strong&gt;The change history&lt;/strong&gt; — every work session: what changed, in which files, with lines added/removed: &lt;a href="https://vuxuantoan.me/lich-su-mam-van.html" rel="noopener noreferrer"&gt;https://vuxuantoan.me/lich-su-mam-van.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Before &amp;amp; after, for every flow change
&lt;/h2&gt;

&lt;p&gt;The part I like most: whenever a change modifies a &lt;em&gt;flow&lt;/em&gt;, the history page automatically gets two buttons — &lt;strong&gt;"flow BEFORE this change"&lt;/strong&gt; and &lt;strong&gt;"flow AFTER this change"&lt;/strong&gt;. 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why bother?
&lt;/h2&gt;

&lt;p&gt;Because an indie maker's scarcest resource isn't code — it's &lt;em&gt;clarity&lt;/em&gt;. 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.&lt;/p&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;—&lt;/p&gt;

&lt;p&gt;I'm Vũ Xuân Toàn. My home on the web is &lt;a href="https://vuxuantoan.me" rel="noopener noreferrer"&gt;vuxuantoan.me&lt;/a&gt;, my code lives at &lt;a href="https://github.com/vut08905" rel="noopener noreferrer"&gt;github.com/vut08905&lt;/a&gt;, and Mầm Văn itself is live at &lt;a href="https://mamvan.vercel.app" rel="noopener noreferrer"&gt;mamvan.vercel.app&lt;/a&gt;. Say hi!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>typescript</category>
      <category>react</category>
      <category>showdev</category>
    </item>
    <item>
      <title>Hello, I'm Vũ Xuân Toàn (Vu Xuan Toan) — a software developer &amp; indie maker from Vietnam</title>
      <dc:creator>Vũ Xuân Toàn</dc:creator>
      <pubDate>Sun, 18 Oct 2026 17:01:57 +0000</pubDate>
      <link>https://dev.to/vut08905/hello-im-vu-xuan-toan-vu-xuan-toan-a-software-developer-indie-maker-from-vietnam-5bko</link>
      <guid>https://dev.to/vut08905/hello-im-vu-xuan-toan-vu-xuan-toan-a-software-developer-indie-maker-from-vietnam-5bko</guid>
      <description>&lt;p&gt;Hi DEV community! I'm Vũ Xuân Toàn (written without diacritics as Vu Xuan Toan), a software developer and indie maker from Bắc Ninh, Vietnam, born on 4 December 2005 in Biển Động, Bắc Ninh. I'm the founder of Vu Xuan Toan Tech, where I build AI-powered software.&lt;/p&gt;

&lt;p&gt;What I work on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mầm Văn — a literature-learning platform for Vietnamese middle-school students (React, TypeScript, Supabase), with teacher grading tools and an AI content studio.&lt;/li&gt;
&lt;li&gt;Vinh Giang WMS — an AI warehouse management system combining real-time warehouse data with LLM APIs.&lt;/li&gt;
&lt;li&gt;Oracle Cloud infrastructure automation and Facebook Messenger chatbots.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My home on the web is &lt;a href="https://vuxuantoan.me" rel="noopener noreferrer"&gt;https://vuxuantoan.me&lt;/a&gt; and my code lives at &lt;a href="https://github.com/vut08905" rel="noopener noreferrer"&gt;https://github.com/vut08905&lt;/a&gt;. I joined DEV to share what I learn while building. Say hi!&lt;/p&gt;

</description>
      <category>introduction</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
