qsgen3/README.md
Stig-Ørjan Smelror c470ac40c0 feat: Implement robust theme system and document architecture
- 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.
2025-05-31 00:00:21 +02:00

46 lines
1.7 KiB
Markdown

# 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.sh` for 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
1. Configure your site in `site.conf`.
2. Add Markdown content to the `content/` directory.
3. Customize templates in `layouts/`.
4. Run the build script:
```bash
./bin/qsgen3
```
5. 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.).