Gần đây mình quyết định bắt đầu một blog cá nhân nhỏ.

Mục tiêu rất đơn giản: tạo một nơi để ghi lại những gì mình học được về software engineering, cloud architecture và system design.

Trong bài viết này mình sẽ chia sẻ ngắn gọn cách mình build blog này.


Yêu cầu ban đầu

Trước khi chọn stack, mình đặt ra một vài tiêu chí:

  • nhanh và nhẹ
  • viết bài dễ dàng
  • ít phải bảo trì
  • workflow dựa trên Git
  • chi phí gần như bằng 0

Vì nội dung blog chủ yếu là text nên static site generator là lựa chọn hợp lý nhất.


Tech Stack

Stack của blog khá đơn giản:

  • Hugo — static site generator
  • Markdown — viết bài
  • GitHub — quản lý source
  • Static hosting — deploy

Toàn bộ website được generate thành static HTML.

Không có:

  • backend
  • database
  • server logic

Điều này giúp hệ thống đơn giản và ổn định.


Vì sao chọn Hugo?

Có khá nhiều cách để build blog. Mình đã cân nhắc một vài lựa chọn phổ biến.

OptionƯu điểmNhược điểm
HugoRất nhanh, markdown-basedCần setup ban đầu
WordPressDễ dùngNặng và cần bảo trì
GhostTrải nghiệm viết tốtCó chi phí
Next.js BlogLinh hoạtPhức tạp hơn mức cần

Cuối cùng mình chọn Hugo vì:

  • tốc độ build cực nhanh
  • workflow Markdown đơn giản
  • ít phải bảo trì

Đối với một tech blog cá nhân, đây là lựa chọn rất phù hợp.


Kiến trúc blog

Kiến trúc của blog khá đơn giản:

Markdown
   ↓
Git Commit
   ↓
Hugo Build
   ↓
Static HTML
   ↓
Hosting

Hoặc đơn giản hơn:

Writer → Markdown → Hugo → Website

Nhờ việc sử dụng static files, việc deploy rất rẻ và website hoạt động rất ổn định.


Workflow viết bài

Toàn bộ bài viết là các file Markdown trong repository.

Ví dụ:

content/posts/how-i-built-this-blog.md

Quy trình viết bài:

Viết → Commit → Push → Deploy

Workflow này rất quen thuộc với developer.


Một số khó khăn

Custom theme

Nhiều theme Hugo có khá nhiều tính năng không cần thiết.

Trong khi mình muốn:

  • layout tối giản
  • load nhanh
  • typography sạch

Cách giải quyết:
Bắt đầu với theme đơn giản rồi chỉnh sửa dần.


Tổ chức nội dung

Ban đầu mình khá phân vân nên viết blog theo kiểu:

  • tutorial
  • bài dài
  • learning log
  • ghi chú ngắn

Cuối cùng mình quyết định blog này sẽ thiên về engineering notes.

Format này giúp việc viết bài dễ hơn và blog được cập nhật thường xuyên hơn.


Hỗ trợ hai ngôn ngữ

Blog hỗ trợ English và Vietnamese, nên mỗi bài cần hai phiên bản.

Một workflow có thể là:

Idea
 ↓
Outline
 ↓
Generate EN draft
 ↓
Translate to VI
 ↓
Review → Publish

AI có thể hỗ trợ phần generate bản nháp ban đầu.


Bài học rút ra

Việc build blog hiện nay thực ra khá đơn giản.

Bạn chỉ cần:

  • Markdown
  • static site generator
  • static hosting

Phần khó nhất không phải là công nghệ.

Phần khó nhất là viết bài đều đặn.


Bước tiếp theo

Giờ khi blog đã chạy, việc quan trọng nhất là tiếp tục viết.

Một số chủ đề mình dự định viết trong thời gian tới:

  • AWS architecture
  • system design
  • distributed systems
  • engineering lessons
  • study notes

Mình cũng dự định cải thiện blog dần theo thời gian, ví dụ:

  • navigation tốt hơn cho nhiều ngôn ngữ
  • RSS feed
  • một vài automation cho việc viết bài

Kết

Blog này hiện vẫn còn rất đơn giản.

Giống như nhiều side project khác, nó sẽ phát triển dần theo thời gian khi mình tiếp tục viết và cải thiện nó từng chút một. Hi vọng sẽ chia sẻ được cho các bạn nhiều kiến thức hữu ích.