summaryrefslogtreecommitdiff
path: root/content/1.md
diff options
context:
space:
mode:
authorHimanshu Sardana <himanshusardana2005@gmail.com>2026-03-26 21:26:35 +0000
committerHimanshu Sardana <himanshusardana2005@gmail.com>2026-03-26 21:26:35 +0000
commit103e84d847262830bbaa550b37218e9ca8b317d3 (patch)
treee19d3bfd6594600fb28be1ccac1a3869207bc49c /content/1.md
parent5c631f0cdb8ee3238ff054d171dd8babd158047b (diff)
refactor: split into cmd, pkg
Diffstat (limited to 'content/1.md')
-rw-r--r--content/1.md40
1 files changed, 40 insertions, 0 deletions
diff --git a/content/1.md b/content/1.md
new file mode 100644
index 0000000..e2a8df1
--- /dev/null
+++ b/content/1.md
@@ -0,0 +1,40 @@
+---
+title: Writing a static site generator for fun and profit
+date: 24/3/26
+---
+
+Tired of bloated Next.js projects taking up 100MBs of RAM on my VPS, I decided
+to shift my personal site to a more minimal framework. Remembering [Luke
+Smith](https://www.youtube.com/@LukeSmithxyz)'s old video about Hugo, I decided
+to give it a try. I was thinking of writing my own Hugo Theme when I had the
+"bright" idea of writing my very own static site generator instead.
+
+> Enter **Kite**
+
+## How an SSG works
+A static site generator takes in a directory full of markdown files and
+converts them plain-old HTML files while maintaining a theme. For my use-case,
+since I mainly wanted a blog, the most important page would be the **post**
+page.
+
+The Page struct can therefore be defined as:
+
+```go
+type Page struct {
+ Title string
+ Content template.HTML
+ TOC []TOCItem
+}
+```
+
+## Parsing Frontmatter
+Frontmatter is the small YAML-like block at the top of each markdown file
+containing info such as the post title, it's date, tags etc.
+
+```go
+type Frontmatter struct {
+ Title string `yaml:"title"`
+ Date string `yaml:"date"`
+ Tags []string `yaml:"tags"`
+}
+```