All Projects โ†’ ostera โ†’ Cactus

ostera / Cactus

๐ŸŒตA composable static site generator

Programming Languages

ocaml
1615 projects
reason
219 projects

Projects that are alternatives of or similar to Cactus

Blog Generator
static blog generator for my blog at https://zupzup.org/
Stars: โœญ 57 (-9.52%)
Mutual labels:  static-site-generator, markdown
Solo
๐ŸŽธ B3log ๅˆ†ๅธƒๅผ็คพๅŒบ็š„ Java ๅšๅฎข็ซฏ่Š‚็‚น็ณป็ปŸ๏ผŒๆฌข่ฟŽๅŠ ๅ…ฅไธ‹ไธ€ไปฃ็คพๅŒบ็ฝ‘็ปœใ€‚B3log distributed community blog-end node system, welcome to join the next generation community network.
Stars: โœญ 780 (+1138.1%)
Mutual labels:  static-site-generator, markdown
Gostatic
Fast static site generator
Stars: โœญ 387 (+514.29%)
Mutual labels:  static-site-generator, markdown
Verless
A simple and lightweight Static Site Generator.
Stars: โœญ 276 (+338.1%)
Mutual labels:  static-site-generator, markdown
Jbake
Java based open source static site/blog generator for developers & designers.
Stars: โœญ 904 (+1334.92%)
Mutual labels:  static-site-generator, markdown
Cms.js
Client-Side JavaScript Site Generator
Stars: โœญ 3,016 (+4687.3%)
Mutual labels:  static-site-generator, markdown
Ox Hugo
A carefully crafted Org exporter back-end for Hugo
Stars: โœญ 591 (+838.1%)
Mutual labels:  static-site-generator, markdown
Docfx
Tools for building and publishing API documentation for .NET projects
Stars: โœญ 2,873 (+4460.32%)
Mutual labels:  static-site-generator, markdown
Nextein
A static site generator with markdown + react for Next.js
Stars: โœญ 825 (+1209.52%)
Mutual labels:  static-site-generator, markdown
Couscous
Couscous is good.
Stars: โœญ 807 (+1180.95%)
Mutual labels:  static-site-generator, markdown
Reptar
static sites that roar
Stars: โœญ 268 (+325.4%)
Mutual labels:  static-site-generator, markdown
Hastysite
A small but powerful static site generator
Stars: โœญ 42 (-33.33%)
Mutual labels:  static-site-generator, markdown
refabricator
Static Site Generator for/in ReasonML
Stars: โœญ 31 (-50.79%)
Mutual labels:  static-site-generator, reasonml
Phenomic
DEPRECATED. Please use Next.js instead.
Stars: โœญ 3,264 (+5080.95%)
Mutual labels:  static-site-generator, markdown
Ocamlverse.github.io
Documentation of everything relevant in the OCaml world
Stars: โœญ 117 (+85.71%)
Mutual labels:  build-system, reasonml
Assemble
Community
Stars: โœญ 3,995 (+6241.27%)
Mutual labels:  static-site-generator, markdown
Mkdocs
Project documentation with Markdown.
Stars: โœญ 13,346 (+21084.13%)
Mutual labels:  static-site-generator, markdown
Emacs Easy Hugo
Emacs major mode for managing hugo
Stars: โœญ 235 (+273.02%)
Mutual labels:  static-site-generator, markdown
Zola
A fast static site generator in a single binary with everything built-in. https://www.getzola.org
Stars: โœญ 7,823 (+12317.46%)
Mutual labels:  static-site-generator, markdown
Metalsmith
An extremely simple, pluggable static site generator.
Stars: โœญ 7,692 (+12109.52%)
Mutual labels:  static-site-generator, markdown

๐ŸŒต Cactus โ€” A composable static site generator

Cactus is a reaction to the amount of static site generators out there that enforce their structures on you. Cactus does very little. If you open it up, you'll find it's full of water.

Installing

cactus builds with Esy just fine. Make sure to have libev-dev installed tho!

esy
esy build
esy x cactus

Getting Started

Cactus works in a very simple way. In fact it's almost silly how simple it is. If you put a cactus-project file on the root of your project, cactus will look throughout your whole project for site files.

site files simply tell cactus that this particular folder should be compiled into a website.

So if you have your posts in the following structure:

my/website ฮป tree
.
โ”œโ”€โ”€ pages
โ”‚   โ”œโ”€โ”€ First-post.md
โ”‚   โ””โ”€โ”€ Some-other-post.md
โ””โ”€โ”€ sections
    โ”œโ”€โ”€ about.md
    โ”œโ”€โ”€ hire-me.md
    โ””โ”€โ”€ projects.md

You just need to touch a few files:

my/website ฮป touch cactus-project
my/website ฮป touch pages/site sections/site

And you can run cactus to compile the website using the same tree structure under a _public folder:

my/website ฮป cactus build
๐ŸŒต Compiling project...
๐ŸŒฎ Done in 0.002s

my/website  ฮป tree
.
โ”œโ”€โ”€ _public
โ”‚   โ”œโ”€โ”€ pages
โ”‚   โ”‚   โ”œโ”€โ”€ First-post.html
โ”‚   โ”‚   โ””โ”€โ”€ Some-other-post.html
โ”‚   โ””โ”€โ”€ sections
โ”‚       โ”œโ”€โ”€ about.html
โ”‚       โ”œโ”€โ”€ hire-me.html
โ”‚       โ””โ”€โ”€ projects.html
โ”œโ”€โ”€ cactus-project
โ”œโ”€โ”€ pages
โ”‚   โ”œโ”€โ”€ First-post.md
โ”‚   โ”œโ”€โ”€ Some-other-post.md
โ”‚   โ””โ”€โ”€ site
โ””โ”€โ”€ sections
    โ”œโ”€โ”€ about.md
    โ”œโ”€โ”€ hire-me.md
    โ”œโ”€โ”€ projects.md
    โ””โ”€โ”€ site

Which you can readily serve however you feel like. Upload to S3, Now, GCS, Github pages, or pretty much wherever.

When in doubt, check out the example folder. All of the features will be showcased there.

Templating

You'll quickly notice that the bare compilation from Markdown to HTML doesn't quite fit all use-cases. To alleviate this cactus lets you specify in your site file a template file to be used for all the Markdown files within that specific site.

Say you wanted to wrap all of the pages from the example above in a common markup: add a <meta charset="utf-8"> to all of them. You'd write a template file:

<html>
  <head>
    <meta charset="utf-8">
  </head>
  <body>
    {| document |}
  </body>
</html>

And in your site file you'd point to it:

(template "path/to/template.html")

Voila! That's all it takes to get the templating up and running. It's very basic at the moment, but it'll get you quite far! The next step is to provide better support for building pages with arbitrary logic, possibly by letting you specify a module to be used for processing each file.

Assets

To copy assets (any supporting file to your site) you can use the (assets ...) rule:

(assets
  style.css
  logo.svg
  bg_music.midi)

And they will be automatically copied from their location, relative to the site file.

You can also use the shorthand . instead of listing your assets to have all the files in the folder copied over. This is not recursive.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].