A static site generator that turns Markdown into documentation sites. Available as both a CLI tool and a Kotlin library.
Genesis focuses on UI generation for content-heavy sites. For interactivity, you'll need to embed raw JavaScript strings, which can get messy for complex applications. Genesis works best for documentation, blogs, and content sites with minimal JavaScript needs.
Heads up: This is an experimental personal project. I'm figuring things out as I go, so expect some rough edges and API changes.
Write Markdown, configure with YAML, customize with Kotlin scripts. That's pretty much it.
- Documentation sites (primary focus)
- Blogs and other content websites
- Static informational sites
- Projects with simple interactivity needs
- Complex web applications
- Heavy JavaScript/interactive sites
- Projects requiring modern frontend frameworks
- Real-time or dynamic applications
There are two ways to get the CLI tool.
-
Install a release: Download it from GitHub releases or install via the openSUSE Software.
-
Build from source: To build and install the CLI locally from the source code:
./gradlew installDist
This will generate the required executable scripts at:
/genesis-cli/build/install/genesis-cli
Once installed, you can use it in your project:
# Create genesis.config.yml with your site structure
# Write some .md files
genesis-cli serve # Live preview
genesis-cli build # Generate site
implementation("io.github.sakethpathike:genesis-core:LATEST_VERSION")
generate(
rootDirPath = "path/to/your/docs",
genesisRenderer = DefaultGenesisRenderer,
genesisColors = GenesisColors.Default,
outputFolderName = "genesisBuild"
)
Genesis is designed to be extended programmatically.
When using CLI, you can customize the output by simply adding Kotlin script files to your project's root directory. There is no plugin or theme system to learn - just your existing Kotlin knowledge.
genesis.renderer.kts
: Change how Markdown elements are rendered into HTML.genesis.colors.kts
: Override the default color palette.
When using genesis-core as a library, pass your custom implementation instance to the generate
function.
This is a personal project that works for my own use cases. The default design is opinionated but will probably evolve. The API is not stable and might change as I figure out better ways to do things.
Genesis Documentation - Setup guides, configuration, and examples.
Apache License 2.0