https://github.com/jottenlips/agave
π― Sweet simple static site generator
https://github.com/jottenlips/agave
agave agave-generator dune github-pages hacktoberfest hacktoberfest2020 html markdown md microblog npm ocaml opam reasonml ssg static-site static-site-generator themes
Last synced: 16 days ago
JSON representation
π― Sweet simple static site generator
- Host: GitHub
- URL: https://github.com/jottenlips/agave
- Owner: jottenlips
- License: other
- Created: 2020-09-27T15:51:06.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-12-31T19:31:23.000Z (about 1 year ago)
- Last Synced: 2025-04-05T16:38:07.049Z (11 months ago)
- Topics: agave, agave-generator, dune, github-pages, hacktoberfest, hacktoberfest2020, html, markdown, md, microblog, npm, ocaml, opam, reasonml, ssg, static-site, static-site-generator, themes
- Language: Reason
- Homepage: https://jottenlips.github.io/
- Size: 196 KB
- Stars: 13
- Watchers: 2
- Forks: 0
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
- awesome-list - agave
README

Minimal markdown to HTML for static sites with pretty URLs.
Written in [ReasonML](https://reasonml.github.io/) with native OCaml toolchain (opam + dune).
## Install
### Via npm
```
npm install -g agave-generator
```
### Build from source
Requires [opam](https://opam.ocaml.org/) and OCaml 5.1+.
```console
opam install . --deps-only -y
dune build
dune install
```
### Link locally for development
```console
opam install . --deps-only -y
dune build
cp _build/default/bin/Agave.exe bin/agave-native
npm link --ignore-scripts
```
Now `agave` is available globally. To unlink:
```console
npm unlink -g agave-generator
```
## Use
```console
mkdir blog
cd blog
mkdir markdown
touch markdown/index.md # home page
touch markdown/first-post.md # /first-post/ route
agave # reads all your readmes in ./markdown and outputs them to ./public
```
For the full list of options run `help`.
```console
agave --help
```
## Themes
Simply pass the -t argument and the theme name
```console
agave -t desert
```
## Full Customization
If you didn't find a theme for you you can add any base HTML and CSS you would like.
base.html will wrap every generated page.
base.html must contain `` where you would like your content placed.
If you have a `styles.css` file in the markdown folder, it will be copied to the deployment folder.
```console
touch markdown/base.html
touch markdown/styles.css
echo "" > markdown/base.html
agave # run the generator again
```
Here is an example of using custom `base.html`.
[Blog](https://jottenlips.github.io/)
[Repo](https://github.com/jottenlips/jottenlips.github.io)
## File structure
```
./markdown
βββbase.html
βββindex.md
βββanother-page.md
βββtopic.md
βββ/topic
βββ2019-1-1.md
βββ2020-1-1.md
βββ2021-1-1.md
```
results in
```
./public
βββindex.html
βββanother-page/index.html
βββ/topic
βββindex.html
βββ2019-1-1/index.html
βββ2020-1-1/index.html
βββ2021-1-1/index.html
```
## Deploy your site
Github Pages
```console
agave --markdown myblog --public docs
git add --all
git commit -m"deploy"
git push
```
Setup your repo to look at the docs folder on your main branch in the repo settings.
## Run your site locally
```console
agave -s
# Server running at http://localhost:8080/
```
You can also serve any existing directory without generating:
```console
agave -p ./docs -s
```
## Release
1. Commit and tag:
```console
git add -A && git commit -m "v0.2.0: description"
git tag v0.2.0
git push origin main --tags
```
2. GitHub Actions builds native binaries for `linux-x64`, `darwin-x64`, and `darwin-arm64` and attaches them to a GitHub Release.
3. Publish to npm:
```console
npm publish
```
## Support
Want to support this project?
[](code_of_conduct.md)