content/projects/sqzass.md (4042B)
1 +++
2 title = "sqzass"
3 description = "A static site generator written in Rust. This site is built with it."
4 weight = 10
5 date = 2026-07-31
6
7 [extra]
8 tier = "landing"
9
10 eyebrow = "Static site generator · Rust"
11 tagline = "Most generators lean on their host for pretty URLs, redirects and cache headers. sqzass does that work itself, so the same output is correct on GitHub Pages, on Vercel, or in a directory served over plain HTTP."
12 lang = "Rust"
13 license = "MIT"
14 version = "0.1.0"
15 platform = "Linux · macOS"
16 repo = "https://github.com/sqzer-x/sqzass"
17 stars = 0
18 accent = "#e0a06a"
19 mark = "images/projects/sqzass.png"
20 logo = ""
21
22 actions = [
23 { label = "Documentation", url = "https://sqzass.sqzer.com", style = "primary" },
24 { label = "Source", url = "https://github.com/sqzer-x/sqzass", style = "ghost" },
25 ]
26
27 # 별 개수 대신 확인할 수 있는 사실. Rust 도구를 보러 온 사람이 실제로 궁금해하는 것들이다.
28 facts = [
29 { value = "25 ms", label = "1,000 pages" },
30 { value = "0", label = "Runtime deps" },
31 { value = "0.1.0", label = "Version" },
32 { value = "MIT", label = "License" },
33 ]
34
35 features_eyebrow = "Design"
36 features_title = "Six decisions, and the argument for each"
37 features_intro = "None of these are preferences. Each one is a failure that happened somewhere else first."
38 # 항목은 아래 [[extra.features]] 에 있다. 인라인 테이블은 TOML 1.0 에서
39 # 한 줄을 넘지 못하고, 이 설명들은 한 줄에 들어가지 않는다.
40
41 session_eyebrow = "Quickstart"
42 session_title = "Three files, then a site"
43 session_shell = "zsh"
44 session_caption = "Real output. The documentation site in this repository is 60 pages."
45 session_lines = [
46 { kind = "cmd", text = "$ sqzass init mysite" },
47 { kind = "comment", text = "# writes sqzass.toml, content/_index.md, templates/page.html" },
48 { kind = "cmd", text = "$ sqzass serve -i mysite" },
49 { kind = "out", text = " http://127.0.0.1:3000 live reload" },
50 { kind = "cmd", text = "$ sqzass build -i docs" },
51 { kind = "out", text = " 60 pages → docs/public" },
52 ]
53
54 cta_title = "Read the documentation."
55 cta_text = "Built with sqzass, from the docs directory of the same repository. CI builds it with the binary it just compiled."
56 cta_actions = [
57 { label = "sqzass.sqzer.com", url = "https://sqzass.sqzer.com", style = "primary" },
58 { label = "Source", url = "https://github.com/sqzer-x/sqzass", style = "ghost" },
59 ]
60
61 [[extra.features]]
62 title = "Broken references stop the build"
63 desc = "An unresolved link, a missing template, two pages claiming the same URL, a misspelled config key — every one is an error, not a warning you scroll past."
64
65 [[extra.features]]
66 title = "Markdown on the AST"
67 desc = "Link rewriting, heading anchors and the table of contents are tree operations. A regex over finished HTML silently skips any attribute that is single-quoted."
68
69 [[extra.features]]
70 title = "Byte-identical builds"
71 desc = "Two builds of the same input produce the same bytes, and CI checks it on every push. Rendering is parallel; determinism comes from the merge, not the schedule."
72
73 [[extra.features]]
74 title = "Korean was not bolted on"
75 desc = "Translations sit beside their originals, links resolve to the reader's language, and search matches substrings — the only way 최적화 inside 검색엔진최적화 is ever found."
76
77 [[extra.features]]
78 title = "Classes, never inline styles"
79 desc = "Highlighting emits class names. Inline colours pin one theme into every document forever and put a strict style-src out of reach."
80
81 [[extra.features]]
82 title = "One binary, no runtime"
83 desc = "No Node, no Python, no system libraries. The thing you download is the thing that runs."
84
85 +++
86
87 The site you are reading is built with it. So is [its own documentation][docs] —
88 which makes the docs a regression test for the generator, since CI builds them
89 with the binary it just compiled.
90
91 [docs]: https://sqzass.sqzer.com