Flowershow publishes a folder of files as a website. Markdown is rendered with your site's theme. HTML and other files are served exactly as you uploaded them. You can mix all of them in one folder.

At a glance

FileWhat you getSite theme, navbar, custom.cssURL for docs/example.<ext>
.md, .mdxA page rendered from MarkdownYes/docs/example
.canvas (Obsidian Canvas)A page showing the canvas as a diagramYes/docs/example
.htmlThe file, byte-for-byte. Scripts run.No/docs/example.html
.css, .jsThe file, for your HTML pages to loadNo/docs/example.css
.json, .csv, .yaml, .ymlThe file, for pages to fetch or readers to downloadNo/docs/example.json
.png, .jpg, .jpeg, .gif, .svg, .webpThe imageNo/docs/example.png
.pdfThe PDF, which opens in the browserNo/docs/example.pdf

Markdown and MDX

.md and .mdx files become pages with your site's theme, navigation, config.json settings and custom.css. The extension is dropped from the URL, and index.md or README.md is served at its folder's URL (docs/README.md is at /docs).

Supported syntax includes CommonMark, GitHub Flavored Markdown, Obsidian wikilinks and embeds, callouts, Mermaid diagrams and LaTeX math. See Supported syntax and Syntax mode for Markdown versus MDX.

Adding .md to a page URL returns the raw Markdown source. See Markdown access.

Obsidian Canvas and Bases

A .canvas file becomes its own page at the URL without the extension (roadmap.canvas is at /roadmap). You can also embed a canvas in a Markdown page with ![[roadmap.canvas]]. Requesting the .canvas URL itself returns the raw JSON. See Obsidian Canvas.

Obsidian Bases work as base code blocks inside a Markdown page, which render as tables, cards or lists. A standalone .base file isn't published as a page. See Obsidian Bases.

HTML

A .html file is served byte-for-byte as you wrote it. Flowershow adds no theme, navbar or scripts, and your page's own <script> tags run.

  • URLs keep the .html extension. about.html is at /about.html, and /about returns a 404. Link between pages with about.html.
  • Only the site root falls back to index.html. If there's no index.md or README.md at the root, the site root redirects to index.html. A folder's index.html isn't served at the folder URL: report/index.html is at /report/index.html, and /report returns a 404.
  • Relative paths work. A page can load css/style.css, js/app.js, data/items.json and images from the same folder tree. Publish the whole folder so the paths stay intact.
  • config.json and custom.css don't apply. Style the page in its own HTML or CSS.

For a step-by-step guide, including how to put HTML inside a Markdown page instead, see Publishing HTML.

CSS, JavaScript, data, images and PDFs

These files are served as-is, with a content type that matches the extension, so browsers and scripts handle them normally:

  • CSS and JavaScript load in your HTML pages.
  • JSON, CSV and YAML can be fetched with fetch(). They're served with Access-Control-Allow-Origin: *, so pages on other sites can fetch them too.
  • Images can be used in Markdown and HTML pages, and each one has its own URL.
  • PDFs open in the browser's PDF viewer.

Changes to these files can take several minutes to show after you republish, because they're cached. If an update must show immediately, rename the file (for example style.v2.css) and update the reference.

Limits

When you publish with the CLI, the Obsidian plugin or a dashboard upload, one publish can include up to 1,000 files, up to 100 MB per file and 500 MB in total. Storage per site depends on your plan.

Files that aren't listed on this page are uploaded, but may not be reachable at their own URL. Use one of the types above for anything readers or scripts need to load.

Built with LogoFlowershow