c470ac40c0d7ae4432bae211efcfd5e0d698c1fe
- Implement flexible theme switching via site.conf (site_theme, site_theme_css_file). - Ensure correct copying of theme static assets, with theme assets overriding root assets. - Resolve CSS linking issues by checking file existence after static copy and using correct paths for Pandoc. - Refactor path construction to prevent duplication when using absolute/relative output paths. - Create comprehensive how-it-works.md detailing system architecture, theme creation, and overall workflow. - Clarify design philosophy: qsgen3 remains design-agnostic, only linking main theme CSS automatically.
qsgen3 - A Minimal Markdown Static Site Generator
This is a refactored version of qsgen, focusing on simplicity, Markdown with YAML frontmatter, and a Zsh-based build process.
Project Goals
- Remove QSTags and switch to Markdown + YAML frontmatter.
- Simplify codebase by removing multilingual and theme support.
- Refactor templating with uniform variables (e.g.,
{{ content }},{{ title }}). - Ensure future-proofing by avoiding complex dependencies (like AWK for long string manipulation) for core tasks.
- Provide a solid initial setup that works out of the box with a sample post, index, and layout.
- Include a converter script in
scripts/convert-qstags-to-md.shfor legacy content.
Structure
bin/qsgen3: The main Zsh build script.site.conf: Site configuration (INI format).content/: Source Markdown files.content/posts/: Blog posts.content/pages/: Static pages.
layouts/: HTML templates.layouts/base.html: Base template for all pages.layouts/post.html: Template for individual blog posts.layouts/page.html: Template for static pages.
static/: Static assets (CSS, images, etc.) copied as-is to the output.output/: The generated website.scripts/: Utility scripts (e.g., content converter).
Usage
- Configure your site in
site.conf. - Add Markdown content to the
content/directory. - Customize templates in
layouts/. - Run the build script:
./bin/qsgen3 - Your static site will be generated in the
output/directory.
Dependencies
- Zsh
- A Markdown processor (e.g., Pandoc, CommonMark, or a Zsh-native solution if feasible for basic needs).
- Standard Unix utilities (grep, sed, find, etc.).
Languages
Shell
72.2%
Python
14.2%
HTML
9%
CSS
4.6%