# static\_site

* [Static Site Generator](#static-site-generator)
  * [SSG](#ssg)
  * [Astro](#astro)
  * [More](#more)
* [for Wiki](#for-wiki)
  * [Sphinx - Python](#sphinx---python)
    * [Themes](#themes)
    * [Static Files](#static-files)
    * [Table](#table)
    * [Diagrams](#diagrams)
  * [MkDocs - Python](#mkdocs---python)
    * [mkdocs.yml](#mkdocsyml)
* [for Blogs](#for-blogs)
  * [Pelican - Python](#pelican---python)
* [Cloudflare Pages](#cloudflare-pages)
* [Github pages](#github-pages)
  * [Github Actions - SSR](#github-actions---ssr)
  * [Issue Blog](#issue-blog)
* [Free Hosting](#free-hosting)
* [Demos](#demos)

## Static Site Generator

* SSG (Static Site Generation) | npm run build
* CSR(client-side rendering) | browser does all building / Jira
* SSR (server-side rendering) | cannot cache the page
* ISR (incremental static regeneration) | Serve a cached static page, then update it in the background

### SSG

```
npm run build
npm run serve # test locally

npm run start -- --host 0.0.0.0
```

More: SSG\_\*.md

### Astro

* Astro 6 | March 10, 2026 | <https://astro.build/blog/astro-6/>

  * cf adapter : <https://docs.astro.build/en/guides/integrations-guide/cloudflare/>

  cd project && npx astro --version

### More

<https://github.com/myles/awesome-static-generators>

* Vite powered/Unused JavaScript: <https://astro.build/>
* Vite & Vue powered: <https://github.com/vuejs/vitepress>
* Jekyll theme with search : <https://github.com/just-the-docs/just-the-docs>
* Antora: multi repo into 1: <https://docs.antora.org/antora/latest/>
* Jupyter: <https://curvenote.com/docs/web/notebooks>
* RMarkdown: <https://rmarkdown.rstudio.com/docs/reference/publish\\_site.html>

## for Wiki

### Sphinx - Python

reStructuredText -> HTML, PDF, plain text, EPUB, TeX

* Start: <https://www.sphinx-doc.org/en/master/tutorial/getting-started.html>
* toctree options: <https://www.sphinx-doc.org/en/master/usage/restructuredtext/directives.html>

GraphiQL: <https://github.com/hasura/sphinx-graphiql>

#### Themes

Builtin: <https://www.sphinx-doc.org/en/master/usage/theming.html#builtin-themes>

* only the Alabaster and Scrolls themes are mobile-optimated

Templating/blocks: <https://www.sphinx-doc.org/en/master/development/templating.html#blocks>

`Read the Docs` theme with custom footer: <https://github.com/readthedocs/sphinx\\_rtd\\_theme/blob/master/sphinx\\_rtd\\_theme/footer.html>

```
html_show_sphinx = False # conf.py

# %templates_path%/footer.html    
{% extends "!footer.html" %}
{%- block extrafooter %}

{% endblock %}
```

#### Static Files

<https://www.sphinx-doc.org/en/master/usage/configuration.html>

* html\_static\_path / html\_css\_files / html\_js\_files
* html\_additional\_pages: .html files

#### Table

<https://docs.espressif.com/projects/esp-docs/en/latest/writing-documentation/table.html> - span: <https://return42.github.io/linuxdoc/linuxdoc-howto/table-markup.html#flat-table>

#### Diagrams

<https://chiplicity.readthedocs.io/en/latest/Using\\_Sphinx/UsingGraphicsAndDiagramsInSphinx.html>

### MkDocs - Python

#### mkdocs.yml

* <https://github.com/mkdocs/mkdocs/blob/master/mkdocs.yml>
* <https://github.com/mkdocs/mkdocs/blob/master/mkdocs/tests/integration/complicated\\_config/mkdocs.yml>
* <https://gitlab.liris.cnrs.fr/pagoda/tools/mkdocs\\_template/-/blob/develop/user\\_config/mkdocs.local.yml>

## for Blogs

### Pelican - Python

Markdown, reStructuredText, and HTML

* default theme -> blog : <https://www.smashingmagazine.com/>
* <https://github.com/getpelican/pelican>
* <https://docs.getpelican.com/en/latest/index.html#documentation>

## Cloudflare Pages

\<YOUR\_PROJECT\_NAME>.pages.dev: <https://developers.cloudflare.com/pages/platform/build-configuration/#framework-presets>

* Static: Framework presets = None
* [Vue 3](https://developers.cloudflare.com/pages/framework-guides/deploy-a-vite3-project/): env NODE\_VERSION>14.18

1 github repo => 1 cf project = 1 build kernel ([ref](https://community.cloudflare.com/t/cloudflare-pages-multiple-projects-with-a-single/287910))

## Github pages

CNAME: .github.io

Gihub token: <https://github.com/settings/tokens>

### Github Actions - SSR

<https://docs.github.com/en/actions/quickstart>

```
.github/workflows
```

check usage: <https://github.com/settings/billing>

### Issue Blog

Vue + JS: <https://github.com/Yidadaa/Issue-Blog-With-Github-Action>

## Free Hosting

| Free                                                                                                              | Storage    | month                         |
| ----------------------------------------------------------------------------------------------------------------- | ---------- | ----------------------------- |
| [Github](https://docs.github.com/en/billing/managing-billing-for-github-actions/about-billing-for-github-actions) | 500 MB     | 2000 min                      |
| [Cloudflare](https://developers.cloudflare.com/pages/platform/limits/)                                            | 25MiB/site | 500 times                     |
| [vercel](https://vercel.com/pricing)                                                                              |            | 100GB b/w                     |
| [netlify](https://www.netlify.com/pricing/#features)                                                              | 500 sites  | 100GB b/w(then $55 per 100GB) |

## Demos

* `vite --template vue` : <https://github.com/fzinfz/test-vue3/tree/vite-js-quasar>
  * <https://test-vue3.pages.dev/>
* `astro --template blog` : <https://github.com/fzinfz/test-pages/tree/astro.blog>
  * <https://test-pages-7ku.pages.dev/>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://book.ferro.pro/web/static_site.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
