www.git

www

~ Personal site — projects, posts, about. Built with sqzass.
git clone https://github.com/debuman/www.git

README.md (2908B)

      1 # sqzer.com
      2 
      3 Personal site — projects, technical posts, and an about page. English and Korean.
      4 
      5 Built with [sqzass](https://github.com/sqzer-x/sqzass), deployed to GitHub Pages.
      6 No bundler, no package manager, no `node_modules`.
      7 
      8 작업 기록과 뒤집힌 결정은 [`WORKLOG.md`](WORKLOG.md)에 있습니다.
      9 
     10 ## Working on it
     11 
     12 ```bash
     13 sqzass serve -i .     # http://127.0.0.1:3000, live reload
     14 sqzass build -i .     # writes ./public
     15 python3 tools/check.py
     16 ```
     17 
     18 `sqzass` currently needs the `feat/pageref-date` branch — the Posts ledger reads
     19 `child.date`, which `PageRefCtx` did not carry before
     20 ([sqzer-x/sqzass#1](https://github.com/sqzer-x/sqzass/pull/1)). Once that merges,
     21 drop `--branch` from `.github/workflows/pages.yml`.
     22 
     23 ```bash
     24 cargo install --git https://github.com/sqzer-x/sqzass --branch feat/pageref-date --locked
     25 ```
     26 
     27 ## Layout
     28 
     29 | | |
     30 |---|---|
     31 | `content/` | pages. `page.md` is English, `page.ko.md` is Korean |
     32 | `templates/` | minijinja. `base.html` owns the chrome; each index names its own template |
     33 | `static/` | one stylesheet, two scripts, one font, the images |
     34 | `i18n/` | UI strings the templates supply. A key missing from one language is a build error |
     35 | `tools/check.py` | the two things the build does not check for you |
     36 
     37 ## Adding things
     38 
     39 **A post.** Drop a file in `content/posts/`. `title` and `date` in the front
     40 matter is enough; the ledger picks up the rest, groups by year, and orders newest
     41 first. Write `content/posts/<name>.ko.md` beside it for the Korean version — an
     42 untranslated page is absent from the Korean navigation rather than duplicated.
     43 
     44 **A project.** Two edits, and `tools/check.py` fails if you only make one:
     45 
     46 1. `content/projects/<name>.md` — the page. Copy the schema from an existing one
     47    and keep **every** key: an omitted key is a build error, not a default. `tier`
     48    is `"landing"` (hero, facts, features, a terminal session, a call to action) or
     49    `"brief"` (hero and prose). There is no middle rung on purpose.
     50 2. `content/projects/_index.md` — the catalogue entry, under a `[[extra.group]]`.
     51    Listings only carry title, description, url, weight and date, so the language
     52    badge and the links have to live here.
     53 
     54 Inline tables must fit on one line — TOML 1.0 does not let them wrap. Use
     55 `[[extra.features]]` blocks when the text is too long for that.
     56 
     57 **An image.** Put it in `static/images/projects/` and set `logo` on the project.
     58 Until then the hero and the card render the project's name as the artwork, at the
     59 same size the image will take, so nothing moves when you add one.
     60 
     61 ## Deploying
     62 
     63 Push to `main`. The workflow checks integrity, builds, builds a second time and
     64 diffs the two, then deploys. A build that is not reproducible does not ship.
     65 
     66 The domain is in `static/CNAME` and is copied to the output with its name intact,
     67 so it survives every deploy without being set in the repository settings again.