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.