MindMapVault MMV

Part 7 · April 21, 2026

Owning Your Workflow: How Self-Hosting, Automation, and Better Tooling Shaped MindMapVault

How commit history, branch hygiene, and decision notes became a practical ownership system for a fast-moving, security-sensitive project.

Owning Your Workflow: How Self-Hosting, Automation, and Better Tooling Shaped MindMapVault

Owning Your Workflow: How Self‑Hosting, Automation, and Better Tooling Shaped MindMapVault

Most posts about self‑hosting or indie projects drift into marketing speak. This one doesn’t. This is simply how I build and ship MindMapVault — the real workflow, the real tools, and the real reasons behind them.

This chapter is about ownership. Not in the corporate sense, but in the “I want to understand and control my own tools” sense. If you’re building something solo, or experimenting with automation, or trying to level up your confidence as a developer, this might resonate.

Why I Self‑Host My Git Forge

I run a self‑hosted Forgejo instance on my NAS with a runner. Not because GitHub or GitLab are bad — they’re great — but because I know myself.

Sometimes I move fast.
Sometimes I forget things.
Sometimes I push .env values straight into a repo.

Keeping the forge and runner physically close to me solves that. It gives me:

  • control (no accidental secrets leaving my network)
  • convenience (fast CI, predictable environment)
  • confidence (I can experiment without worrying about leaking something)

And honestly? I just like the project. Forgejo is clean, lightweight, and fits the “local‑first” philosophy behind MindMapVault.

What I use it for

  • another Git remote
  • CI/CD workflows
  • automated checks
  • release builds
  • experiments that I don’t want to run on a public cloud

It’s not about paranoia. It’s about craftsmanship. When you own the forge, you own the workflow.

Automation Makes You a Better Developer (Especially Solo)

When you’re working alone, automation isn’t a luxury — it’s a survival mechanism.

My Forgejo runner handles:

  • type‑checking
  • offline‑parity checks
  • desktop build pipelines
  • release asset uploads
  • version bumping
  • changelog generation

This means I can focus on the actual product instead of the glue.

And here’s the interesting part: AI tools like GitHub Copilot Agents changed the way I commit.

Not by writing code for me — but by making me more disciplined:

  • commits became larger but more coherent
  • changelogs became more structured
  • documentation became essential, not optional
  • project planning became a real process, not a TODO file

When AI helps you move faster, the meta‑work (planning, documenting, structuring) becomes even more important. Otherwise you drown in your own velocity.

Production Hosting: Simple, Predictable, Mine

I host production on a Czech community VPS: vpsFree.cz. It’s stable, affordable, and gives me the right balance of control and simplicity.

The setup is intentionally minimal:

  • backend (Rust)
  • Postgres
  • MinIO
  • Cloudflare Tunnel
  • Cloudflare Pages for the frontend

All running via a single docker-compose.yml:

CONTAINER ID   NAME                       CPU %     MEM USAGE / LIMIT   MEM %     NET I/O           BLOCK I/O   PIDS
468768ef5c79   mindmapvault-backend       0.00%     31.55MiB / 4GiB     0.77%     26.7MB / 4.73MB   0B / 0B     9
06c14906524a   mindmapvault-postgres      0.00%     31.82MiB / 4GiB     0.78%     2.17MB / 28.7MB   0B / 0B     7
d52f573bcdef   mindmapvault-minio         3.68%     86.56MiB / 4GiB     2.11%     3.65MB / 10.7MB   0B / 0B     13
27fcb47af8c7   mindmapvault-cloudflared   0.19%     16.31MiB / 4GiB     0.40%     132MB / 212MB     0B / 0B     13

No Azure.
No Firebase.
No vendor lock‑in.

Just a clean, reproducible, auditable setup.

Open‑Sourcing the Local‑First Version

The FOSS version of MindMapVault lives here:

👉 https://github.com/mindmapvault/mindmapvault-foss/wiki

It’s a local‑first, privacy‑focused, offline‑capable mind‑mapping desktop app.

  • No cloud.
  • No telemetry.
  • No account.

If you review the code and see weak spots, please comment directly. I welcome criticism — it’s the only way a solo project grows.

Example: A Real Changelog Entry

This is what a typical release looks like now — structured, explicit, and automation‑friendly:

[0.3.27] – 2026‑05‑03

Changed

  • Editor UX / Node Icons — Restored full node icon workflow in MindMapEditor.tsx:
    • toolbar icon picker
    • context‑menu icon action
    • keyboard shortcut I
    • inline icon rendering
    • multi‑select icon toggling
    • help panel + status bar hints
  • Editor Components — Added reusable icon picker infrastructure (MindMapIconPicker.tsx, DynamicLucideIcon.tsx).
  • CI / Release Automation — Modernized .github/workflows/desktop-build.yml:
    • upgraded actions
    • replaced deprecated upload steps
    • switched to Corepack for pnpm
    • kept $GITHUB_OUTPUT usage

Validation

  • pnpm exec tsc --noEmit → clean
  • node scripts/check_frontend_offline_parity.mjs → passed

This is the kind of detail that makes automation reliable and future‑you grateful.