# The Journey of a Golang Indie Hacker: Building a Web Framework from Scratch


## 🧠 10 Years of Coding — 5 Years of Building a Foundation

In a world already full of frameworks — **WordPress**, **Django**, **Laravel**, **Rails** — why would anyone decide to build their own?

That’s the question I’ve asked myself for years.

Ten years ago, when I first learned programming, I was obsessed with understanding how others wrote such complex code. I started with **Blogspot**, downloading and tweaking themes, convincing myself that I “knew web development.”

But that was only the surface.

Later, I discovered **Angular**, and that changed everything. I realized a website isn’t just a pretty interface — it can become a **powerful, living application**.

That’s also when I began learning about **SEO** and **User Experience (UX)**. UX isn’t just about placing a button in the right spot to improve conversion rates — it’s about delivering genuine value to users. It doesn’t have to be beautiful; it just has to **work and solve a need**.

## 🔧 Why Not Use Existing Frameworks?

I currently use **Fiber (Golang)** — a framework inspired by **Express.js** — but not in its original form.

I rewrote several core parts, especially the **template engine**, based on **database mapping principles**. This allows me to query and render data similarly to **Shopify’s Liquid**, but in my own way.

I don’t think I’m smarter than anyone else — I just want to **understand and control everything I build**.

### Why not use a JavaScript framework?

I’ve been there too. I once wrote my own JS framework, but I realized it took too much time for too little gain. Building from the **server-side** made more sense — I could handle **security** and **control** much better.

So I started developing a **Web Component system** using **Vanilla JS** — fast, minimal, and dependency-free. I wanted something that could **run by embedding a single script tag**, not an entire build process.

## 🌀 Starting Over (2020)

In **2020**, I decided to start over — from zero.

I had no money, no stable job, no connections. Just a dream of **technological independence**.

For six months, I worked on a custom **DNS system**.  
I still remember showing a friend my first generated ID:

```
2wjqpur0ife35a49yklnxbc6g1dohz78vstm
```

It was just a string — no interface, no frontend — but I was ecstatic.

Then came the next challenge: managing **node inheritance** in a system hierarchy.

In **JavaScript**, it’s simple. But in **Golang**, pointer management can be brutal. I hit what’s known as the **Diamond Problem**, where multiple inheritance causes cyclic references. Solving it in Go was… a rite of passage.

After that, I wrote my own **template engine**, studied **Shopify Liquid**, **ASP.NET**, **Angular Pipes**, and **Vue/React Routers** — and built a system that worked for me. Not perfect, but *mine*.

> In programming, nothing is perfect.  
> We write code → it breaks → we fix it → we grow.

From there, I developed APIs, Web Components, search systems, a **QR code generator**, and a **URL shortener**.  
I dove deeper into **databases**, **indexing**, **query optimization**.  
Not an expert in everything — just enough to build something that works.

## 💡 Hopes of an Indie Hacker

Once the core framework was functional, I added automation — a **data crawler**, a primitive **UI**, basic **string interpolation**, and later, **Go templates** for rendering.

If you’ve worked with Go, you’ll notice similarities with **Hugo**. I love that minimalism — it helps me understand how everything connects at the root level.

When I launched my first real product — a **price comparison website** — it quickly reached the **Top 100 E-commerce Websites in Vietnam**.

But the setup? Just a tiny VPS:  
**1 core CPU, 2GB RAM, 20GB SSD.**

It was a victory… until it wasn’t.  
The server couldn’t handle the load.  
I lost uptime, users, and momentum.

Still — that experience was **priceless**.

## 🔗 Building Tools for Growth

After that, I built a **URL shortener** to track my **affiliate marketing** links.

I wanted to measure **CPC**, **EPC**, and understand scaling efficiency.  
It taught me how to optimize campaigns, interpret data, and think like a systems architect — not just a coder.

Every tool I built became another piece of my framework — another module in my growing ecosystem.

## 🌍 The Vision — and The Why

I am a **Golang Indie Hacker** — no team, no funding, no fancy marketing.

But I dream of one day raising funds to scale this framework into something that can truly **empower local businesses**.

A platform that can **replace WordPress, Odoo, or Shopify** — giving Vietnamese entrepreneurs the power to **own their websites, data, and brands**.

That’s why I’ve spent **five years (since 2020)** developing this framework — alone, but not lost.

I don’t know what the future holds.  
What I do know is that I love this journey — the quiet joy of solving problems that matter.

I’m not an expert. I’m just a kid who fell in love with code.

To me, programming isn’t just about writing logic.  
It’s about creating **real value** for others — and believing that automation can make human work more meaningful.

And that’s what keeps me coding.

## 🧭 Notes

- Article originally published in **2024**, reposted in **2025**
- **AI-powered English translation**
- Read the original Vietnamese version here: [https://hnq.vn/blog/hanh-trinh-cua-mot-golang-indie-hacker-xay-dung-web-framework-tu-so-khong](https://huynhnhanquoc.com/blog/hanh-trinh-cua-mot-golang-indie-hacker-xay-dung-web-framework-tu-so-khong)

## 💌 More About Me

- **Blog:** [huynhnhanquoc.com](https://huynhnhanquoc.com)
- **GitHub:** [github.com/huynhnhanquoc](https://github.com/huynhnhanquoc)
- **Open Source:** [github.com/kitmodule](https://github.com/kitmodule)
- **Buy me a Coffee:** [buymeacoffee.com/huynhnhanquoc](https://https://huynhnhanquoc.com/blog/hom-nay-la-mot-ngay-dep-troi-e-viet-code)
- **Keep me Dreaming:** [ko-fi.com/huynnhanquoc](https://ko-fi.com/huynnhanquoc)

Thanks for reading Huỳnh Nhân Quốc’s article! Subscribe for free to receive new posts and support my work.

